将命令输出分配给bash中的变量

时间:2015-01-19 22:41:21

标签: linux bash variables

我在尝试制作bash脚本时遇到问题。

这是命令:

ps -ef | grep "python ./" |awk '{print $2 }' | head -n 1

以下是我如何保存变量

first =$(ps -ef | grep "python ./" |awk '{print $2 }' | head -n 1)

当我执行此脚本时,控制台会说:

  

./ test.sh:line3:2748:订单未找到

我做错了什么?感谢

1 个答案:

答案 0 :(得分:7)

变量赋值如下:var=$(command)

所以在你的情况下,你写了太多的空间。而不是:

first =$(ps -ef | grep "python ./" |awk '{print $2 }' | head -n 1)
     ^

你需要写:

first=$(ps -ef | grep "python ./" |awk '{print $2 }' | head -n 1)
     ^
     no spaces around = !!

您为什么收到此错误消息?

  

./ test.sh:line3:2748:订单未找到

因为使用first XX,Bash了解您正在尝试使用参数first运行命令XX


附录:为了使命令更直接,没有尽可能多的管道,使用单awk作为suggested by Tom Fenech(谢谢!):

ps -ef | awk '/python \.\//{print $2; exit}'
               ^^^^^^^^^^   ^^^^^^^^  ^^^^
                    |          |      stop processing, to get 1 value
                    |       print the 2nd block
               match lines with python ./