Leerzeichen im Shell-Skriptpfad


1

Ich habe beide Methoden ausprobiert, um den Pfad im folgenden Skript freizugeben:

#!/bin/bash -x
PGHOME="/Applications/pgAdmin 4.app/Contents/SharedSupport"
$PGHOME/psql --username postgres -c "drop database $1"

Ich habe auch versucht, Zeile 2 zu ändern:

PGHOME=/Applications/pgAdmin\ 4.app/Contents/SharedSupport

In beiden Fällen erhalte ich den Skriptfehler:

./pg10-restoreDb.sh: Zeile 3: / Applications / pgAdmin: Keine solche Datei oder Verzeichnis

Von der Shell aus kann ich /Applications/pgAdmin\ 4.app/Contents/SharedSupport/psqlkein Problem ausführen

Was könnte diesen Fehler verursachen?


In Zukunft ist es wahrscheinlich sinnvoller, nach Stackoverflow zu fragen und mit bash zu taggen, da bash nicht Apple-spezifisch ist, aber ich bin froh, dass Sie hier schnell eine Antwort erhalten haben :)
Michael Wu

1
Die Frage ist hier perfekt zum Thema
nohillside

Antworten:


4

Sie können das Leerzeichen beim Definieren der Variablen entweder in Anführungszeichen setzen oder es maskieren. Sie müssen es dann jedoch auch doppelt in Anführungszeichen setzen, wenn Sie es verwenden:

#!/bin/bash -x
PGHOME="/Applications/pgAdmin 4.app/Contents/SharedSupport"
"$PGHOME/psql" --username postgres -c "drop database $1"
^            ^
|            |
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.