How to capture the output of a bash command into a variable when using pipes and apostrophe?
本问题已经有最佳答案,请猛点这里访问。
我不知道如何通过bash将命令的输出保存到变量中:
1 | PID = 'ps -ef | grep -v color=auto | grep raspivid | awk '{print $2}'' |
我必须用一个特殊的字符来表示撇号还是管道?
谢谢!
要捕获shell中命令的输出,请使用命令替换:
1 | pid=$(ps -ef | grep -v color=auto | grep raspivid | awk '{print $2}') |
笔记
在shell中进行赋值时,等号周围不能有空格。
在为本地使用定义外壳变量时,最好使用小写或混合大小写。对系统重要的变量在大写中定义,您不希望意外覆盖其中一个变量。
简化
如果目标是获得
1 | pid=$(ps -ef | awk '/[r]aspivid/{print $2}') |
注意将当前进程从输出中排除的简单技巧:我们不搜索
为了演示
1 | pid=$(ps -ef | awk '/raspivid/ && !/color=auto/{print $2}') |
这里,
更直接的方法: