3
$ sh
sh-3.2$ if
> ps -ef | grep apple ;
> then
> echo APPLE 
> fi ;
lazer   7584  7571  0 04:36 pts/4    00:00:00 grep apple
APPLE
sh-3.2$ exit
exit
$ which sh
/bin/sh
$ /bin/sh -c if ps -ef | grep apple ; then echo APPLE fi ;
bash: syntax error near unexpected token `then'
$

如上所述,我的简单 if 语句在逐行执行时按预期工作,但在使用执行时给我以下错误sh -c

bash:意外标记“then”附近的语法错误

我在这里想念什么?

4

1 回答 1

2

您的交互式 shell 将通过sh -c. 特别是它把分号后面的每一个都作为一个新的声明。

引用你要喂的所有东西,/bin/sh例如

$ /bin/sh -c "if ps -ef | grep apple ; then echo APPLE fi ;"

我认为您可能还需要使用分号进一步分隔,因为您将所有内容压缩到一行,并且可能建议您可以使用heredoc

于 2012-04-13T11:42:53.420 回答