【发布时间】:2016-04-10 06:31:20
【问题描述】:
在 C-shell 中,我需要检查一个文件是否存在,或者它是否比另一个文件更旧(或者在这个例子中,比 unix 时间开始时间早 5 秒)。如果文件不存在或者是旧文件,应该执行一些东西。
在我的示例中“bla.txt”不存在,所以第一个条件为真
if ( ! -f bla.txt || `stat -c "%Y" bla.txt` > 5 ) echo 1
stat: cannot stat `bla.txt': No such file or directory
1
问题是,如果我在 if 语句中结合这些条件,则执行第二个(文件年龄),尽管第一个已经为真,并且由于文件不存在而给出错误。
在 bash 中,一切正常
if [ ! -f bla.txt ] || [ `stat -c "%Y" bla.txt` > 5 ]; then echo 1; fi
1
关于如何在没有else if 的情况下在 csh 中实现此行为的任何想法?我不想让命令在我的代码中执行两次。
谢谢!
【问题讨论】:
-
我刚刚意识到 bash 命令的 if 语句中的第二个条件有多么错误,但它没有被执行所以没关系^^
标签: shell logical-operators csh tcsh