Ich möchte alle Dateien aus einem Unterverzeichnis in ein anderes Verzeichnis kopieren, ohne den ursprünglichen Ordner zu kopieren. In einem Terminal würde ich das einfach machen:
%Vor%und dann wird dir2 alle Dateien von dir1 enthalten, ohne dir1 selbst zu enthalten. Ich versuche, dies in einem Bash-Skript zu replizieren, und ich bekomme einen Fehler. Hier ist mein Bash-Code:
%Vor%Ich bekomme diesen Fehler:
%Vor%Das ist seltsam, weil ich überprüfen kann, ob das betreffende Verzeichnis existiert. Ich glaube, Bash beschwert sich über das '*', aber ich bin mir nicht sicher warum. Kann mir jemand aufklären, was ich falsch mache?
Erweitern Sie den Kommentar von devnull:
Zitate von jeder Art um einen Platzhalter wie *
verhindern, dass die Shell den Platzhalter erweitert. Daher sollten Sie "/*"
nur schreiben, wenn Sie einen Schrägstrich gefolgt von einem Literalstern wünschen.
Eine nicht-quoted Variable unterliegt der Worttrennung. Wenn also pck_dir den Wert my dir
hat, wird $pck_dir"/*"
auf zwei Wörter my
und dir/*
erweitert und beide Wörter werden als separate Argumente an cp
übergeben. Sofern Sie keine Worttrennung wünschen, sollten Shell-Variablen immer in doppelten Anführungszeichen stehen.
Um zu erhalten, was Sie wollen, verwenden Sie:
%Vor%