私はシェルスクリプトについてよく知りませんが、これは非常に簡単な修正になると思いましたが、混乱しています。
ディレクトリの内容(多くのファイルを除く)をコピーする必要があります。端末に入力すると動作するコマンドがありますが、シェルスクリプトで実行すると構文エラーが原因で失敗したり、まったく動作しません。
問題のコマンドは次のとおりです。
cp -r path/to/!(dir1|dir2|dir3) destination
どんな助けでも大変感謝します!
答え1
これがksh
文法です。bash
この構文は、次の方法でオプションを有効にした場合にのみ認識されます。extglob
shopt -s extglob
したがって、その行をスクリプトの先頭に追加するか、スクリプトを置き換えるか呼び出すと解釈する必要がありksh
ます(後者はお勧めできません。スクリプトによって生成されたすべてのbashシェルに対してオプションが有効になっているため)。bash
env BASHOPTS=extglob your-script
extglob
おそらく、システムでこのオプションを有効にしたのでしょう~/.bashrc
。これがプロンプトで機能する理由です(~/.bashrc
非ログインインタラクティブシェルでのみ読むことができます)。