忽略 tcsh 脚本中 cp 的 "cannot stat" 错误(文件不存在)

Ignore "cannot stat" error (file does not exist) for cp in tcsh script

我有使用 tcsh shell 的 makefile(我知道不推荐这样做,但这是一项要求)。如果 a.txt 不存在,我不希望它中断,但我希望它继续执行下一个命令。我该怎么做?

setup:
   cp -rf a.txt b.txt; \
   [other things that should be executed]

您可以使用类似的东西:

([ -f a.txt ] && cp a.txt b.txt); ls

这在 C shells 和 Bourne shells

中都有效
  • [ -f a.txt ] 使用 test(又名 [)命令检查 a.txt 是否存在。
  • &&是"and"运算符,如果前面的命令([)成功,则只执行下一个命令(cp)。
  • 我们将其括在括号 ((...)) 中以将其组合在一起,因此我们可以添加 ; 和 运行 更多不受文件测试影响的命令。

我们也可以使用 C shell 的内置 if,但对于不熟悉 csh 的人(即大多数人)来说,这更便于携带和熟悉。