Bash-Argumente Mehrzeilig Einzeilig Arrays Doppelte Anführungszeichen Verhalten Vergleich

Vergleich des Verhaltens von Argumenten: Mehrzeilig, Einzeilig, Arrays und doppelte Anführungszeichen in Bash

In der Befehlszeilen-Bash-Sprache haben wir das Verhalten von mehrzeiligen, einzeiligen, Arrays und doppelten Anführungszeichen als Argumente verglichen.

Shou Arisaka
2 Min. Lesezeit
17. Nov. 2025

In der Befehlszeilen-Bash-Sprache haben wir das Verhalten von mehrzeiligen, einzeiligen, Arrays und doppelten Anführungszeichen als Argumente verglichen.

Lassen Sie uns den rm-Befehl als Beispiel ausprobieren.


$ \ls -1
1.txt
2.txt
3.txt

$ rm "$( \ls -1 )"
rm: cannot remove '1.txt'$'\n''2.txt'$'\n''3.txt': No such file or directory

$ rm $( \ls -1 )

$ rm $( \ls -1 | ruby -e "puts STDIN.read.gsub(/\n/, \"\s\")" )

$ rm ( $( \ls -1 ) )
bash: syntax error near unexpected token `$( \ls -1 )'

Häufige Fehler, Irrtümer und korrekte Beispiele

Hier ist eine Zusammenfassung häufiger Fehler und korrekter Beispiele.

rm "$$( \ls -1 )"
rm "1.txt 2.txt 3.txt"

Mit rm 1.txt 2.txt 3.txt wären alle Dateien gelöscht worden.

Dies ist ein häufiger Fehler. Wenn es in doppelte Anführungszeichen eingeschlossen ist, wird es als einzelnes Argument behandelt.

rm $$( \ls -1 )
rm 1.txt 2.txt 3.txt

Das zweite ist ein typisches korrektes Beispiel. Der Schlüsselpunkt ist, es nicht in doppelte Anführungszeichen einzuschließen.

rm $$( \ls -1 | ruby -e "puts STDIN.read.gsub(/\n/, \"\s\")" )
rm $$( printf "\n1.txt\n2.txt\n3.txt\n" )
rm 1.txt 2.txt 3.txt

Das dritte ersetzt mehrzeilige Ausgabe in eine einzeilige. Die übergebenen Argumente können entweder mehrzeilig oder einzeilig sein, was bedeutet, dass sie durch Leerzeichen oder Zeilenumbrüche getrennt werden können. In jedem Fall wird es jedoch, wenn Sie die Argumente in doppelte Anführungszeichen einschließen, als einzelnes Argument behandelt und führt zu einem Fehler.

rm ( $$( \ls -1 ) )
rm (1.txt 2.txt 3.txt)

Das vierte versuchte, ein Array zu übergeben. Arrays sind kein Verarbeitungsziel, daher führt es zu einem Fehler. Da es gelegentlich Fälle gibt, in denen Sie ein Array als Argument zur Verarbeitung übergeben, können Sie es in solchen Fällen mit Klammern ohne doppelte Anführungszeichen tun.

Diesen Artikel teilen

Shou Arisaka 17. Nov. 2025

🔗 Links kopieren