脚本中的 $_ 变量未按预期工作
$_ variable in script does not work as expected
我有 c shell 脚本来源另一个:
source ./sc1.csh param
获取的脚本执行以下操作:
set scriptName=($_)
if ( "$scriptName" == "" ) then
set scriptName=[=11=]
echo "@**E: Please source this script, DO NOT RUN!"
echo "ERROR"
exit 1
else
set scriptName=`basename $scriptName[2]`
endif
我希望 $_ 包含 "source ./sc1.csh param"。然而,它实际上是空的。手动 运行
source ./sc1.csh param
在 shell 中会产生正确的预期行为。
怎么回事?
谢谢。
来自 man csh
$_
Substitutes the command line of the last command executed. (+)
由于脚本还没有执行完毕,所以$_还没有设置。
如果再次调用脚本会发生什么?
好的,正如 user1717259 指出的那样,$_ 替换了最后执行的命令的命令行,因此不适合检查正在调用的脚本中的命令行。相反,使用 $*($argv 的别名)是可行的,因为它包含除 "source" 本身之外的所有命令行。
我有 c shell 脚本来源另一个:
source ./sc1.csh param
获取的脚本执行以下操作:
set scriptName=($_)
if ( "$scriptName" == "" ) then
set scriptName=[=11=]
echo "@**E: Please source this script, DO NOT RUN!"
echo "ERROR"
exit 1
else
set scriptName=`basename $scriptName[2]`
endif
我希望 $_ 包含 "source ./sc1.csh param"。然而,它实际上是空的。手动 运行
source ./sc1.csh param
在 shell 中会产生正确的预期行为。 怎么回事?
谢谢。
来自 man csh
$_
Substitutes the command line of the last command executed. (+)
由于脚本还没有执行完毕,所以$_还没有设置。
如果再次调用脚本会发生什么?
好的,正如 user1717259 指出的那样,$_ 替换了最后执行的命令的命令行,因此不适合检查正在调用的脚本中的命令行。相反,使用 $*($argv 的别名)是可行的,因为它包含除 "source" 本身之外的所有命令行。