0

这在 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 并且这个错误没有给出任何见解。我看到了一些类似的案例,但没有关于检查文件是否存在。

4

2 回答 2

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
于 2013-05-31T22:06:35.607 回答
1

请参阅 tcsh 手册页的“文件查询运算符”部分。

您所描述的 tcsh sytnax 是

if ( -e ~/test/file ) then
    echo 'yes'
else
    echo | mail -s 'not done' abc@gmail.com
endif

请注意,tcsh 不擅长在一行上运行代码。

于 2013-05-29T20:33:31.297 回答