(6 Antworten)
Vor 6 Jahren geschlossen.
Ich versuche, dem Leerzeichen für einen Pfad in Bash zu entkommen, aber weder die Verwendung eines umgekehrten Schrägstrichs noch von Anführungszeichen funktioniert.
.sh-Skript:
ROOT="/home/hogar/Documents/files/"
FILE=${ROOT}"bdd.encrypted"
DESTINATION="/home/hogar/Ubuntu\ One/folder"
mv ${FILE} ${DESTINATION}
Nach dem Ausführen des Skripts (./file
) das ist das Ergebnis:
mv: target 'One/folder' is not a directory
Warum funktioniert die mv
Befehl teilt die Zeichenfolge auf, und wie kann ich das verhindern?
Akzeptierte Antwort:
Sie erweitern die DESTINATION-Variable, wenn Sie echo
ausgeführt haben Folgendes würden Sie erhalten:
echo ${DESTINATION}
/home/hogar/Ubuntu\ One/folder
Aber mv
versteht das nicht:
mv ${FILE} ${DESTINATION}
mv: cannot move '/home/hogar/Documents/files/bdd.encrypted' to '/home/hogar/Ubuntu\\ One/folder': No such file or directory
(aus irgendeinem Grund ist mein MV ausführlicher)
Um dies zu verhindern, sollten Sie stattdessen Anführungszeichen verwenden:
mv "${FILE}" "${DESTINATION}"
Wenn Sie keine Erweiterung benötigen (da Sie bereits zuvor erweitert haben), verwenden Sie einfach "$..."
sollte genügen:
mv "$FILE" "$DESTINATION"