gpt4 book ai didi

bash - 代码不适用于 sh -c,但直接适用于 sh

转载 作者:行者123 更新时间:2023-11-29 09:30:42 27 4
gpt4 key购买 nike

$ 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: syntax error near unexpected token `then'

我在这里错过了什么?

最佳答案

您的交互式 shell 将通过 sh -c 转义调用。特别是它将分号后的所有内容都视为新语句。

引用您提供给 /bin/sh 的所有内容,例如

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

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

关于bash - 代码不适用于 sh -c,但直接适用于 sh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com