首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果错误退出tcsh脚本

如果错误退出tcsh脚本
EN

Stack Overflow用户
提问于 2015-08-18 10:30:11
回答 1查看 8.9K关注 0票数 12

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

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

代码语言:javascript
复制
#!/usr/bin/env tcsh

set NAME=aaaa
set VERSION=6.1

#set -e equivalent
#do somthing

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-18 13:34:45

在(t)csh中,set用于定义变量;set foo = bar将将值bar分配给变量foo (就像伯恩shell脚本中的foo=bar一样)。

无论如何,来自tcsh(1)

代码语言:javascript
复制
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。让我们来测试一下:

代码语言:javascript
复制
% cat test.csh
true
false

echo ":-)"

% tcsh test.csh
:-)

% tcsh -e test.csh
Exit 1

无法像shset -e那样在运行时设置它,但是您可以将它添加到hashbang中:

代码语言:javascript
复制
#!/bin/tcsh -fe
false

因此,当您运行./test.csh时,它会自动添加,但是当您键入csh test.csh时,这将是而不是添加它,所以我的建议是使用类似于调用csh脚本的start.sh

代码语言:javascript
复制
#!/bin/sh
tcsh -ef realscript.csh
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32069885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档