我正在学习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}"
我理解管道概念错了吗?我以为它只是将最后一个函数的输入作为最后一个函数的输入,如果是这样,为什么我需要在两行中分开做呢?
谢谢
答案 0 :(得分:3)
您根本不需要该变量。将tar
的输出直接传递到head
。
tar zxvf "$filename" | head -1
如果您随后想要将结果保存到变量中,则可以编写:
filename_2=$(tar zxvf "$filename" | head -1)
echo "$filename_2"