这在bash上运行正常,但我需要在tcsh中运行它。以下是我使用的代码:
if [ -e ~/test/file ]; then echo 'yes'; else echo | mail -s 'not done' abc@gmail.com ; fi
这个基本代码给出了一个错误if: Expression Syntax
。
我不知道错误意味着什么,也不确定为什么if语句不起作用。括号之前/之后我有空格。我尝试了if ( test -f ~/test/file )
并得到了同样的错误。
我迷失了,因为我默认使用bash而且这个错误没有提供任何见解。我看到一些类似的案例,但没有关于检查文件是否存在。
答案 0 :(得分:1)
请参阅tcsh手册页的“文件查询操作员”部分。
您所描述的tcsh sytnax是
if ( -e ~/test/file ) then
echo 'yes'
else
echo | mail -s 'not done' abc@gmail.com
endif
请注意,tcsh不擅长在一行上运行代码片段。
答案 1 :(得分:1)
您可以在一系列命令中使用test命令在一行上运行:
test -e ~/test/file && echo 'yes' || mail -s 'not done' abc@gmail.com
或者如果您对肯定的情况不感兴趣,可以使用简短的“if”格式
if ( ! -e ~/test/file ) mail -s 'not done' abc@gmail.com