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?

Schwarz
quelle
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"
^            ^
|            |
Gordon Davisson
quelle