如何确定当前的tcsh
脚本是否来源(在脚本中)?
我尝试了什么:
if (!($0 == "-tcsh")) then
echo "Script should be sourced."
exit 1
endif
如果我将尝试没有来源它将打印Script should be sourced.
(如预期的那样)。
但是如果我尝试使用source,它将失败并出现以下错误:if: Malformed file inquiry.
。
我该如何解决这个问题?有没有更好的方法来检查它?
你可以通过查看$_
在这里玩一个讨厌的伎俩。
$_
替换最后执行的命令的命令行。
如果将其放在脚本的第一行,并且结果不是空字符串(即之前已执行过命令),则脚本已被提取。
#!/usr/bin/env tcsh
set sourced = ($_)
if ("$sourced" == "") then
echo "Script should be sourced."
exit 1
endif
从https://unix.stackexchange.com/questions/4650/determining-path-to-sourced-shell-script采集的信息
虽然可能有其他方法可以做到这一点,但对您自己的方法进行简单的增强可以正常工作。只需将$ 0括在双引号内。即改变线
if (!($0 == "-tcsh")) then
至
if (!("$0" == "-tcsh")) then