shell – 如果出错则退出tcsh脚本

前端之家收集整理的这篇文章主要介绍了shell – 如果出错则退出tcsh脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试编写一个tcsh脚本.
如果任何命令失败,我需要脚本退出.

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

#!/usr/bin/env tcsh

set NAME=aaaa
set VERSION=6.1

#set -e equivalent
#do somthing

谢谢

在(t)csh中,set用于定义变量; set foo = bar会将值bar赋给变量foo(就像Boo 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.

所以你需要用-e标志调用tcsh.我们来试试吧:

% cat test.csh
true
false

echo ":-)"

% tcsh test.csh
:-)

% tcsh -e test.csh
Exit 1

没有办法在运行时设置它,比如使用sh的set -e,但是你可以将它添加到hashbang:

#!/bin/tcsh -fe
false

所以当你运行./test.csh时会自动添加它,但是当你输入csh test.csh时这不会添加它,所以我的建议是使用类似start.sh的东西来调用csh脚本:

#!/bin/sh
tcsh -ef realscript.csh

猜你在找的Bash相关文章