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 に答える