用管道误以为循环语法误差



我正在尝试此命令

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

最终出现此错误:

-bash: syntax error near unexpected token `|'

我尝试用各种引号和括号将我的QSTAT命令包装为无济于事,我在做什么错?

,因为您似乎想在结果上循环,因此将其更改为:

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

优化版本将是:

for x in $(qstat -u '*' | awk '/Eqw/{print $1}'); do qmod -cj "$x"; done
  • 在旧式命令替换中使用了回声(`)。建议使用foo = $(命令)语法。$()内部的后斜线处理并不令人惊讶,$()更容易嵌套。请参阅http://mywiki.wooledge.org/bashfaq/082
  • awk可以击中自己

改用此SRIPT:

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

应该是:

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

相关内容

  • 没有找到相关文章