Ich kann diesen Befehl über meine Eingabeaufforderung ausführen:
cp -r folder/!(exclude-me) ./
Um alle Inhalte mit folder
Ausnahme des genannten Unterverzeichnisses rekursiv exclude-me
in das aktuelle Verzeichnis zu kopieren . Dies funktioniert genau wie vorgesehen. Ich brauche dies jedoch, um in einem von mir geschriebenen Bash-Skript zu arbeiten, in dem ich Folgendes habe:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
Aber wenn ich das Skript starte:
bash my-script.sh
Ich verstehe das:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
Und ich weiß nicht, warum es an der Eingabeaufforderung funktioniert, aber genau dieselbe Zeile funktioniert in einem Bash-Skript nicht.
env > file1
in das Skript zu setzen und auszuführen./it
, und dannenv > file2
undsource it
in der Hoffnung, dass ich einen Unterschied imenv
s gefunden hätte, was nicht der Fall ist. Wie kann ich programmgesteuert den Unterschied zwischen zwei Shells auflisten (in diesem Fall interaktiv und nicht interaktiv)?