最近我遇到了一个不寻常的使用回声在客户端的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