1

bash シェルから実行すると正常に動作するコマンドで gnu-parallel を実行していますが、-c フラグを使用して bash で並列実行するとエラーが返されます。これは、私が使用している特別なグロビング表現に関係していると思います。

ls !(*site*).mol2

これで正常に戻ります。

フラグを有効にすると、コマンドは失敗します

/bin/bash -c 'ls !(*site*).mol2'
/bin/bash: -c: line 0: syntax error near unexpected token `(' 

マニュアルでは、bash が文字列の引数を読み取るために -c を呼び出すことのみを指定していますが、何か不足していますか?

編集: gnu-parallel 文字列から実行するにはこれが必要なので、最終的な結果のコマンドは /bin/bash -c "Some Command" で実行できる必要があることを追加する必要があります。

4

1 に答える 1

4

次のコードを試してください。

bash <<EOF
shopt -s extglob
ls !(*site*).mol2
EOF

説明 :

を実行するbash -cと、が作成され、subshell設定shoptは継承されません。

編集

本当にワンライナーが必要な場合:

bash -O extglob -c 'ls !(*site*).mol2'

このスレッドを参照してください

于 2012-10-09T20:40:38.177 に答える