bash - 管道 | 在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}"
我对管道概念的理解有误吗?我认为它只是将最后一个函数的输入作为最后一个函数的输入,如果是这样,为什么我需要在两个单独的行中进行呢?
谢谢
解决方案
你根本不需要这个变量。将 的输出tar
直接传递给head
。
tar zxvf "$filename" | head -1
如果您想将该结果保存在一个变量中,您可以编写:
filename_2=$(tar zxvf "$filename" | head -1)
echo "$filename_2"
推荐阅读
- python - 在 Beautifulsoup 的网络文章中查找某些名词
- deep-learning - 关于计算 log_sum_exp 中的一个代码段
- spring - Hystrix 命令属性 ignoreExceptions 没有按预期工作
- javascript - Puppeteer 评估问题
- c++ - 'std::invoke':在 C++ 中使用线程时没有匹配的重载函数
- javascript - Javascript骰子游戏
- javascript - 每个字母一次大写
- matrix - Power Bi 矩阵将 A 列除以另一列 B 的相应值,而不是 B 的总和
- c# - 如何评估三元字符串表达式并识别值
- python - 如何获得 lightgbm 模型特征的方差解释?