【发布时间】:2009-10-15 05:07:46
【问题描述】:
我正在命令行上尝试以下命令
ps -u `id | cut -f2 -d"=" | cut -f1 -d"("` -f | grep ppLSN | awk '{print $9}' | awk '{FS="=";print $2}' | grep KLMN | wc -l
命令的值返回为7。
但是当我将相同的命令放入脚本 abc_sh 中时,如下所示
ps -u `id | cut -f2 -d"=" | cut -f1 -d"("` -f | grep ppLSN | awk '{print $9}' | awk '{FS="=";print $2}' | grep $XYZ | wc -l
我在命令行上将脚本调用为abc_sh XYZ=KLMN,但它不起作用并返回0
问题出在命令grep $XYZ 中的grep
谁能告诉我为什么这不起作用?
【问题讨论】:
-
首先,使用 id -u 代替不必要的切割。
-
可怕的问题,你为什么要隐藏相关信息?首先它之前工作过(没有提及),然后您使用的是 ksh,而不是 bash(通常),也没有提及。
-
在命令扩展之后将
-f参数分离到右侧,使其在混乱中丢失。放在开头:ps -f -u ...(我在这里使用单独的连字符纯粹是为了,呃,“美学”)。