escape di spazio nel percorso di script della shell

0

Ho provato entrambi i metodi di escape dello spazio nel percorso nel seguente script:

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

Ho anche provato a cambiare la linea 2 in:

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

In entrambi i casi ottengo l'errore di script:

./pg10-restoreDb.sh: line 3: /Applications/pgAdmin: No such file or directory

Dalla shell, posso eseguire /Applications/pgAdmin\ 4.app/Contents/SharedSupport/psql nessun problema

Che cosa potrebbe causare questo errore?

    
posta Black 06.03.2018 - 05:18
fonte

1 risposta

3

Puoi quotare o sfuggire lo spazio quando definisci la variabile, ma devi anche quotarlo doppiamente quando lo usi:

#!/bin/bash -x
PGHOME="/Applications/pgAdmin 4.app/Contents/SharedSupport"
"$PGHOME/psql" --username postgres -c "drop database $1"
^            ^
|            |
    
risposta data 06.03.2018 - 09:04
fonte

Leggi altre domande sui tag