4

我正在尝试这个命令

for x in qstat -u '*' | grep Eqw | awk {'print $1'}; do qmod -cj $x; done

并最终出现此错误:

-bash: syntax error near unexpected token `|'

我尝试将 qstat 命令用各种引号和方括号括起来,但无济于事,我做错了什么?

4

4 回答 4

6

由于您似乎想遍历结果,因此将其更改为:

for x in `qstat -u '*' | grep Eqw | awk {'print $1'}`; do qmod -cj $x; done
于 2012-10-19T14:45:06.950 回答
5

优化版本将是:

for x in $(qstat -u '*' | awk '/Eqw/{print $1}'); do qmod -cj "$x"; done
  • 反引号 (`) 用于旧式命令替换。建议使用 foo=$(command) 语法。$() 内的反斜杠处理不那么令人惊讶,并且 $() 更容易嵌套。见http://mywiki.wooledge.org/BashFAQ/082
  • awk可以自己 grep
于 2012-10-19T14:46:19.233 回答
0

请改用此脚本:

for x in $(qstat -u * | awk '/Eqw/ {print $1}')
do
    qmod -cj $x
done
于 2012-10-19T14:46:34.710 回答
0

它应该是:

for x in $(qstat -u '*' | grep Eqw | awk '{print $1}'); do qmod -cj $x; done
于 2012-10-19T14:46:47.610 回答