Ubuntu Linux系统。 基本名称工具必须安装。 Bash脚本被命名为“basename”
#!/bin/bash PROGNAME=$(basename $0) if [[ -e $1 ]]; then echo -e "\nFile Type:" file $1 echo -e "\nFile Status:" stat $1 else echo "$PROGNAME: usage: $PROGNAME file" >&2 exit 1 fi
启动“./basename case”后,“case”是一个bash脚本,发生错误:
/home/user/bin/basename: fork: retry: No child processes /home/user/bin/basename: fork: retry: No child processes ... /home/user/bin/basename: fork: Resource temporarily unavailable
最后它显示了预期的结果。
一些棘手的事情发生在这里。 它是什么?
好,我知道了。 第三行的basename命令不是启动基本的linux工具,而是recursion地启动这个脚本。 所以,像标准linux程序这样的命名脚本并不好。 要使脚本与名称“basename”一起工作,必须使用完整的path名称作为基本名称。
PROGNAME=$(/usr/bin/basename $0)