Shell 忽略setenv命令中的错误并继续进一步执行csh脚本
我有一个包含一组setenv命令(由另一个脚本生成)的文件 a.csh 然后我在Linux终端上运行Shell 忽略setenv命令中的错误并继续进一步执行csh脚本,shell,unix,error-handling,tcsh,setenv,Shell,Unix,Error Handling,Tcsh,Setenv,我有一个包含一组setenv命令(由另一个脚本生成)的文件 a.csh 然后我在Linux终端上运行source a.csh 但是如果未设置变量$ABC,则源代码会错误地输出未定义的变量ABC,并在a.csh中退出,而不运行下一组命令(如setenv PQR“test”) 我希望在setenv XYZ“${ABC}ab”之后继续执行这些命令集 我尝试为setenv命令添加错误重定向,但没有成功 setenv XYZ“${ABC}ab”2>/dev/null 我发现可以使用 source a.cs
source a.csh
但是如果未设置变量$ABC,则源代码会错误地输出未定义的变量ABC,并在a.csh中退出,而不运行下一组命令(如setenv PQR“test”
)
我希望在setenv XYZ“${ABC}ab”
之后继续执行这些命令集
我尝试为setenv命令添加错误重定向,但没有成功
setenv XYZ“${ABC}ab”2>/dev/null
我发现可以使用
source a.csh&echo$?
但这将忽略文件中出现错误后的命令,因为遇到错误时会退出该命令
这是我的csh文件的一个小例子。
但它可以包含一长串setenv
检查$ABC是否存在,然后运行setenv是不可行的。我找到的最接近的解决方法是,如果setenv的值包含变量,则生成setenv,如下所示
[“$?ABC”==“0”]&回显“未定义的$ABC”| | setenv XYZ“$ABC aa”
无法避免检查变量是否存在但不需要if-else阻塞并使其成为一个单衬里 说明:
$?如果未定义变量$ABC,则ABC
返回0如果变量定义为
[“$?ABC”==“0”]
则为false强制执行| |条件。在像
a和&B
这样的条件下,仅当a为真时才执行B(基本和行为)
如果变量ABC未定义[“$?ABC”==“0”]
为true,并且执行&
后的代码回显“未定义的$ABC”
setenv XYZ "${ABC} ab"
setenv PQR "test"