我读到,命令替换的经典形式使用反引号,而 (...) 形式已取代反引号进行命令替换。然而,下面的代码产生了不同的输出。有什么区别?
#backticks.sh
#!/bin/bash
a=`echo Hello!` # Assigns result of 'echo' command to 'a' ...
echo $a # output: Hello!
#parenthesis.sh
#!/bin/bash
a=(echo Hello!) # Assigns result of 'echo' command to 'a' ...
echo $a # output: echo
答案1
您在这里缺少的是$
。
bash 上有两种命令替换形式,反引号(如您所示例所示)和用 括起来$(command)
。
您应该使用的是:
#!/bin/bash
a=$(echo Hello!)
echo $a