我相信我的错误出在do if ($i -gt 100)
区域,但是我无法弄清楚。
我的输入是:
for i in `ps | cut -d ' ' -f1`; do if ($i -gt 100); then echo $i; fi; done
我的输出是将进程ID用作命令的地方。
bash: 13968: command not found
bash: 21732: command not found
bash: 21733: command not found
bash: 21734: command not found
如何解决此问题,应该阅读哪些相关的手册页?谢谢。
答案 0 :(得分:2)
if ($i -gt 100)
应更改为
if [ $i -gt 100 ]
请注意,[]
前后必须有一个空格,否则,您会收到语法错误(因为[
是{{1中指向test
的链接}}。
由于/usr/bin
是man test
,因此相关的管理费用为[
。
此外,但这与问题无关,我建议从
切换到test
到
`command`
以bash播放。
答案 1 :(得分:1)
尚不清楚您的脚本正在尝试执行什么操作(发布的答案在我的系统上不产生任何输出),但是如果您要打印所有大于100的PID,请按以下步骤操作:
$ ps | awk '$1 > 100{print $1}'
PID
314024
217880
230804
217084
263048
260788
218016
313464
201556
200732
答案 2 :(得分:0)
只需在方括号和表达式
之前和之后添加空格for i in `ps | cut -d ' ' -f1`; do if [ $i -gt 100 ]; then echo $i; fi; done