このコマンドは、コマンドラインプロンプトから実行できます。
cp -r folder/!(exclude-me) ./
現在のディレクトリに指定されたサブディレクトリをfolder 除くすべての内容を再帰的にコピーしますexclude-me。これは意図したとおりに機能します。しかし、私が書いたbashスクリプトで作業するには、これが必要です。
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
しかし、スクリプトを実行すると:
bash my-script.sh
私はこれを手に入れます:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
コマンドプロンプトから機能する理由がわかりませんが、bashスクリプトではまったく同じ行が機能しません。
env > file1スクリプトにして実行し./it、その後、env > file2とsource it、私は違いを発見しただろうと期待してenvそうではないの、。2つのシェルのすべての違いをプログラムで一覧表示するにはどうすればよいですか(この場合はインタラクティブと非インタラクティブ)。