今日、私はこれを試してみましたが、うまくいかないことに少し驚きました:
$ nice -n 10 { ./configure && make ; }
-bash: syntax error near unexpected token `}'
「サブコマンド」でグループ化を使用する方法はありますか?
今日、私はこれを試してみましたが、うまくいかないことに少し驚きました:
$ nice -n 10 { ./configure && make ; }
-bash: syntax error near unexpected token `}'
「サブコマンド」でグループ化を使用する方法はありますか?
これを試しましたか?=)
nice -n10 bash -c './configure && make'
シェル構文をプログラムの argv に渡すだけで、それを理解することを期待することはできません。具体的には、表示されているエラーは、コマンドを区切る「リスト演算子」である&&
andが原因です。;
Bash は次のように引数を評価しようとしていますnice
:
nice '-n' '10' '{' './configure'
次に、Bash は&&
( make
) の後の次のコマンドを評価しようとし、次に次のコマンドである を評価しようとし}
ます。技術的には、ブレースは「予約語」と「制御演算子」の両方です。異なるシェルはベアブレースの扱いが少し異なりますが、それは難解な詳細です. ポイントは、解析エラー (ここのような) になるか、" }
" という名前のコマンドが見つからないためにエラーになるか (通常は前者.
この規則の例外は、シェル自体の内部にのみ存在します。たとえば、Bashcoproc
キーワードはこのように機能し、例とほぼ同じように引数の特別な解析と評価を有効にします。