脚本中的$ _变量无法正常工作

时间:2018-07-18 12:32:10

标签: linux csh

我有一个c shell脚本可以提供另一个资源:

source ./sc1.csh param

源脚本执行以下操作:

set scriptName=($_)
if ( "$scriptName" == "" ) then
    set scriptName=$0
    echo "@**E: Please source this script, DO NOT RUN!"
    echo "ERROR"
    exit 1
else
    set scriptName=`basename $scriptName[2]`
endif

我希望$ _包含“源./sc1.csh参数”。但是,它实际上是空的。手动运行

source ./sc1.csh param
外壳程序中的

会导致正确的预期行为。 发生了什么事?

谢谢。

2 个答案:

答案 0 :(得分:1)

来自man csh

$_

Substitutes the command line of the last command executed. (+)

由于脚本尚未完成执行,因此尚未设置$ _。

如果再次调用该脚本会怎样?

答案 1 :(得分:1)

好吧,正如user1717259指出的那样,$ _替换了最后执行的命令的命令行,因此使其不适用于检查正在调用的脚本中的命令行。而是使用$ *($ argv的别名)有效,因为它包含除“源”本身以外的所有命令行。