如何确定tcsh脚本是否来自脚本[tcsh,而不是bash]

问题描述 投票:0回答:2

如何确定当前的tcsh脚本是否来源(在脚本中)?

我尝试了什么:

if (!($0 == "-tcsh")) then
    echo "Script should be sourced."
    exit 1
endif

如果我将尝试没有来源它将打印Script should be sourced.(如预期的那样)。

但是如果我尝试使用source,它将失败并出现以下错误:if: Malformed file inquiry.

我该如何解决这个问题?有没有更好的方法来检查它?

shell tcsh
2个回答
0
投票

你可以通过查看$_在这里玩一个讨厌的伎俩。

$_替换最后执行的命令的命令行。

如果将其放在脚本的第一行,并且结果不是空字符串(即之前已执行过命令),则脚本已被提取。

#!/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
投票

虽然可能有其他方法可以做到这一点,但对您自己的方法进行简单的增强可以正常工作。只需将$ 0括在双引号内。即改变线

if (!($0 == "-tcsh")) then

if (!("$0" == "-tcsh")) then
© www.soinside.com 2019 - 2024. All rights reserved.