gpt4 book ai didi

bash -/bin/bash -c 与直接执行命令有何不同?

转载 作者:行者123 更新时间:2023-11-29 09:03:10 31 4
gpt4 key购买 nike

我很好奇为什么命令:

for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done;

输出/mydir 中的最后十个文件,但是

/bin/bash -c "for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done;"

输出“意外标记‘[/mydir 中的文件]’附近的语法错误”

最佳答案

您正在使用双引号,因此父 shell 在将参数传递给 /bin/bash 之前插入反引号和变量。

因此,您的 /bin/bash 收到以下参数:

-c "for f in x
y
z
...
; do echo ; done;"

这是一个语法错误。

为避免这种情况,请使用单引号来传递您的参数:

/bin/bash -c 'for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done;'

关于bash -/bin/bash -c 与直接执行命令有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26167803/

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