このコマンドは、コマンドラインプロンプトから実行できます。
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つのシェルのすべての違いをプログラムで一覧表示するにはどうすればよいですか(この場合はインタラクティブと非インタラクティブ)。