shell命令中的问题
我正在命令行上尝试以下命令,
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 有人能告诉我为什么这不起作用吗?
i am trying the following command on the command line
ps -u `id | cut -f2 -d"=" | cut -f1 -d"("` -f | grep ppLSN | awk '{print $9}' | awk '{FS="=";print $2}' | grep KLMN | wc -l
the value of teh command is returned as 7
.
but when i am putting the same command inside a script abc_sh like below
ps -u `id | cut -f2 -d"=" | cut -f1 -d"("` -f | grep ppLSN | awk '{print $9}' | awk '{FS="=";print $2}' | grep $XYZ | wc -l
and i am calling the script on the command line as abc_sh XYZ=KLMN
and it does not work and returns 0
the problem is with the grep in the command grep $XYZ
could anybody please tell why this is not working?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
因为您的 $1 变量(脚本的第一个参数)设置为 XYZ=KLMN。
只需使用
abc_sh KLMN
和grep $1
而不是grep $XYZ
。(假设我们在这里讨论 bash)
另一种选择是定义一个临时环境变量,在这种情况下,您必须像这样调用它:
XYZ=KLMN abc_sh
编辑:
找到您正在使用的内容,您必须使用
set -k
(请参阅 BASH 手册中的 SHELL BUILTIN COMMANDS)所以
,它起作用的地方可能在启动脚本之一中有
set -k
(bashrc 或配置文件。)Because your $1 variable (first argument to the script) is set to XYZ=KLMN.
Just use
abc_sh KLMN
andgrep $1
instead ofgrep $XYZ
.(Assuming we are talking about bash here)
The other alternative is defining a temporary environment variable in which case you would have to call it like this:
XYZ=KLMN abc_sh
EDIT:
Found what you were using, you have to use
set -k
(see SHELL BUILTIN COMMANDS in the BASH manual)So
So, the place where this was working probably has
set -k
in one of the startup scripts (bashrc or profile.)尝试以下任何一种方法来设置临时环境变量:
Try any of these to set a temporary environment variable:
你正在使用如此多的命令链接在一起......
you are using so many commands chained together....
调用这个脚本:
像这样:
Call this script:
Like this: