我在尝试制作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:订单未找到
我做错了什么?感谢
答案 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 ./