2012-10-19 213 views
2

循環語法錯誤我想這個命令猛砸與管

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

以及與此錯誤結束:

-bash: syntax error near unexpected token `|' 

我已經試過各種報價和支架包裹我的qstat命令的無濟於事,我做錯了什麼?

回答

4

因爲你似乎要遍歷的結果,因此將其更改爲:

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

啊,難以捉摸的反勾。非常感謝! – erimar77

4

優化版本將是:

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
0

使用此sript代替:

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

它應該是:

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