如何在bash子shell中调用echo?这是我想要的行为:
# w=5
# echo $w > /tmp/x
# cat /tmp/x
5
可是:
# cmd="echo $w > /tmp/x"
# $cmd
5 > /tmp/x
和
# $( $cmd )
bash: 5: command not found
答案 0 :(得分:5)
您的问题不是echo
。
您的问题是重定向。你不能将重定向放在字符串中。
这就是为什么在第一次尝试中echo
输出5 > /tmp/x
的原因。
你的第二次尝试的问题是你失去了" echo
尝试运行输出时的$()
(因为第一次尝试显示$cmd
的输出是5 > /tmp/x
,这不是有效的命令。
那说这是Bash FAQ 050所以停止尝试将命令放在变量中。它没有用。