我正在经历其他人的shell脚本。我可以在脚本开始时看到下面的行。我知道它必须与路径和所有事情做点什么。但任何人都可以解释它是如何工作的吗?
#!/bin/ksh
scripttorun=${0}
scriptname=${0##/*/}
scriptname=$(basename $0)
scriptpath=${0%%/$scriptname}
if [ $scriptpath != $0 ];then
cd $scriptpath
fi
答案 0 :(得分:2)
scripttorun=${0}
只需将$0
的内容分配到scripttorun
。
您也可以使用(在这种情况下无需使用{...}
):
scripttorun=$0
$0
是包含调用命令的脚本的第一个参数(例如:./script.sh
)。
否则:
if [ $scriptpath != $0 ];then cd $scriptpath fi
使用test
或[
时,必须使用双引号保护操作数。请参阅this reminder以获取更多详细信息。
所以你可以改用:
if [[ $scriptpath != $0 ]]; then
cd "$scriptpath"
fi
# or
if [ "$scriptpath" != "$0" ]; then
cd "$scriptpath"
fi
答案 1 :(得分:0)
以下一行:
scripttorun=${0}
使用脚本的参数#0分配局部变量$ scripttorun。作为惯例,在Unix程序中,${0}
,参数号0,始终是正在执行的脚本的调用路径。
这个代码片段的作用是从当前脚本的路径中取出文件名,并使当前工作目录成为脚本所在的路径。