我正在尝试编写一个tcsh脚本。 如果任何命令失败,我需要脚本退出。
在shell中我使用set -e
,但我不知道它在tcsh中的等价物
#!/usr/bin/env tcsh
set NAME=aaaa
set VERSION=6.1
#set -e equivalent
#do somthing
谢谢
答案 0 :(得分:10)
在(t)csh中,set
用于定义变量; set foo = bar
会将值bar
分配给变量foo
(就像Bourne shell脚本中的foo=bar
一样)。
无论如何,来自tcsh(1)
:
Argument list processing
If the first argument (argument 0) to the shell is `-' then it is a
login shell. A login shell can be also specified by invoking the shell
with the -l flag as the only argument.
The rest of the flag arguments are interpreted as follows:
[...]
-e The shell exits if any invoked command terminates abnormally or
yields a non-zero exit status.
因此,您需要使用tcsh
标志调用-e
。我们来测试一下:
% cat test.csh
true
false
echo ":-)"
% tcsh test.csh
:-)
% tcsh -e test.csh
Exit 1
无法在运行时设置此功能,例如使用sh
的{{1}},但您可以将其添加到hashbang:
set -e
所以当你运行#!/bin/tcsh -fe
false
时它会自动添加,但是当你输入./test.csh
时,不会添加它,所以我建议使用类似{{{}的内容1}}将调用csh test.csh
脚本:
start.sh