在bash子shell中进行回声

Sam*_*jar 0 bash echo subshell

如何在bash子shell中调用echo?这是我想要的行为:

# w=5
# echo $w > /tmp/x
# cat /tmp/x
5
Run Code Online (Sandbox Code Playgroud)

但:

# cmd="echo $w > /tmp/x"
# $cmd
5 > /tmp/x
Run Code Online (Sandbox Code Playgroud)

和:

# $( $cmd )
bash: 5: command not found
Run Code Online (Sandbox Code Playgroud)

Eta*_*ner 5

你的问题不是echo.

你的问题是重定向.您不能将重定向放在字符串中.

这就是你第一次尝试echo输出的原因5 > /tmp/x.

与您的第二次尝试的问题是,你"失去"了echo由当时的$()尝试运行输出(因为你的第一次尝试显示您的输出$cmd5 > /tmp/x这不是一个有效的命令.

这就是说Bash FAQ 050所以停止尝试将命令放在变量中.它不起作用.