为什么有人会使用echo为bash或ksh中的variables赋值?

最近我遇到了一个不寻常的使用回声在客户端的ksh脚本中分配variables。

例如,下面有很多例子

a='something' b='else' c=`echo "${a} ${b}"` 

我一直无法想出为什么有人可能会这样做。

这有没有遗留的原因? (我已经做了30多年的炮弹了,以前从来没有见过这个)

还是只是无知?

无论是在当前的bash,还是POSIX sh或Bourne的前辈,都没有任何强制性的理由。

 c="$a $b" 

…是给定代码的完全替代品,运行得更快(尝试将其放在循环中;由反引号创建的命令替换,将新shell作为子流程分离并读取其标准输出 – 高开销操作)。

你看到的是使用回声的一个例子,因为c可以被声明为:

 c="$a $b" 

例如,当你需要命令来过滤输出时,通常使用echo

 $ line="100090 $100,00 Mary" $ name=`echo "$line" | grep -Eo "[a-zA-Z]+$"` echo $name Mary 

但是如果你根本不使用echo,效率会更高。 上面的同样的事情可以用“读”来完成,而不需要创建一个新的过程:

 $ line="100090 $100,00 Paul" $ read -r _ _ name _ <<<"$line" echo $name Paul