![Shell有没有办法使用管道来命名变量?](https://linux22.com/image/126486/Shell%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BD%BF%E7%94%A8%E7%AE%A1%E9%81%93%E6%9D%A5%E5%91%BD%E5%90%8D%E5%8F%98%E9%87%8F%EF%BC%9F.png)
假设我有一个包含三行的文本文件。它被称为
1
2
3
有没有办法让这成为可能:
$ x='cat a | head -1'
答案1
你想做的事情叫做命令替换,它将一个命令的输出放到另一个命令的命令行上。例如,为其他命令提供参数,或将输出分配给变量。
您几乎拥有正确的语法。您需要$()
在您的命令周围使用。例如
x=$(cat a | head -1)
或者,因为猫是不必要的,x=$(head -1 a)
也可以使用反引号 (`),但已被认为已过时,因为它们有许多问题(包括无法嵌套它们,以及难以将它们与单引号区分开)。