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-mein 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 > file1in das Skript zu setzen und auszuführen./it, und dannenv > file2undsource itin der Hoffnung, dass ich einen Unterschied imenvs 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)?