如果出错退出 tcsh 脚本
Exit tcsh script if error
我正在尝试编写 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
(就像 foo=bar
在 Bourne shell 脚本中所做的那样)。
无论如何,从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
我正在尝试编写 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
(就像 foo=bar
在 Bourne shell 脚本中所做的那样)。
无论如何,从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