scripttorun = $ {0}是做什么的?

时间:2014-05-20 11:32:29

标签: shell unix sh aix

我正在经历其他人的shell脚本。我可以在脚本开始时看到下面的行。我知道它必须与路径和所有事情做点什么。但任何人都可以解释它是如何工作的吗?

#!/bin/ksh

scripttorun=${0}
scriptname=${0##/*/}
scriptname=$(basename $0)
scriptpath=${0%%/$scriptname}
if [ $scriptpath != $0 ];then
cd $scriptpath
fi

2 个答案:

答案 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,始终是正在执行的脚本的调用路径。

这个代码片段的作用是从当前脚本的路径中取出文件名,并使当前工作目录成为脚本所在的路径。