如果错误,退出tcsh脚本

时间:2015-08-18 10:30:12

标签: shell tcsh

我正在尝试编写一个tcsh脚本。 如果任何命令失败,我需要脚本退出。

在shell中我使用set -e,但我不知道它在tcsh中的等价物

#!/usr/bin/env tcsh

set NAME=aaaa
set VERSION=6.1

#set -e equivalent
#do somthing

谢谢

1 个答案:

答案 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