两个具有OR条件的命令
test -e a.txt || test -e b.txt
,此命令从CLI正常运行,但是如果我从文件中读取并尝试运行,则会显示sh: ||: unknown operand' error
cat test.txt
test -e a.txt || test -e b.txt
阅读并运行命令
cat test.txt| while read command; do $command;done
sh: ||: unknown operand
任何想法
答案 0 :(得分:1)
非常简化,bash将:
||
的处理发生在步骤1的解析过程中,但是在步骤3中对其进行了扩展。结果,它像运行test -e a.txt "||" test -e b.txt
一样被视为常规字符串。
类似的命令echo {1..10}
和#{1}需要重新执行#3,也会失败。
同时,它将适用于echo $PATH
(#4)和echo Hello
(#4 /#5),因为它们仅使用其后的功能。
虽然在字符串中包含命令是一种代码气味,表明您正在将自己绘画到一个尴尬的角落,但是您可以使用ls *.png
将#1之后的所有步骤应用于您选择的字符串:
eval