繁体   English   中英

Bash用于管道的循环语法错误

[英]Bash for loop syntax error with pipe

我正在尝试此命令

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 = $(command)语法。 $()中的反斜杠处理不足为奇,而$()更易于嵌套。 参见http://mywiki.wooledge.org/BashFAQ/082
  • awk可以grep hitself

请改用以下代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM