管道|在bash使用?

时间:2018-12-06 16:26:41

标签: bash

我正在学习BASH,以下是我的问题。

我正在使用tar -zxvf解压缩文件,这从提取的文件夹中返回(我认为)列表类型ls -l。 我想做的是使用head -1来获取它的第一个对象。

我可以做到这一点,但是为了保持代码的整洁,我想使用管道。

这有效:

filename_2=$(tar zxvf ${filename}) 
echo "${filename_2}" | head -1

这不是(它返回一个空字符串):

filename_2=$(tar zxvf ${filename}) | head -1
echo "${filename_2}"

我理解管道概念错了吗?我以为它只是将最后一个函数的输入作为最后一个函数的输入,如果是这样,为什么我需要在两行中分开做呢?

谢谢

1 个答案:

答案 0 :(得分:3)

您根本不需要该变量。将tar的输出直接传递到head

tar zxvf "$filename" | head -1

如果您随后想要将结果保存到变量中,则可以编写:

filename_2=$(tar zxvf "$filename" | head -1)
echo "$filename_2"