我注意到我们可以使用花括号使一些命令更短,因为它被计算到参数列表中。
输入:
echo a{,b,c}
输出:
a ab ac
从文件传递参数时,如何强制执行相同的行为?
输入:
cat file.txt | xargs echo
输出:
a{,b,c}
预期输出 - 与上一个示例相同。
答案 0 :(得分:1)
{}
扩展是bash
/ zsh
功能,因此您需要通过任何这些shell显式运行它,在您的情况下(使用{{1}让xargs在运行之前将其替换为字符串):
-I<STRING>
答案 1 :(得分:-1)
xargs
调用$ PATH中的echo
,而不是shell的内置回声。你必须做类似的事情
while read -r line; do eval echo "$line"; done < file.txt
如果有人在该文件中放入恶意内容,会使您面临各种令人讨厌的攻击。</ p>
答案 2 :(得分:-1)
除了问你为什么要这样做...我提供以下内容:
将字符串添加到文件中:
input_fn
将字符串放在变量中:
echo 'a{,b,c}' > /tmp/foo
export thing=`cat /tmp/foo`
字符串:
eval
如果你在文件中有一堆这样的文件,那么通过循环运行文件并评估循环值:
eval $thing