Problemi con ssh e scp con nomi file contenenti spazi
Jump to navigation
Jump to search
Se si hanno problemi ad eseguire comandi remoti con ssh o a copiare file con nomi contenenti spazi, ricordarsi che occorre fare un double escape dei nomi.
Ad esempio se si ha una directory contente il file "test file.mp3" e si cerca di eseguire un comando tipo
#!/bin/bash NOME=$(/bin/ls *.mp3) echo Nome=""$NOME"" scp $NOME localhost:/tmp/$NOME ssh localhost "mkdir /tmp/$NOME-dir"
si ottiene l'errore:
Nome=test file.mp3 cp: cannot stat `test': No such file or directory cp: cannot stat `file.mp3': No such file or directory file.mp3: No such file or directory
Questo perchè non viene 'escapata' la variabile. Bisogna invece mettere tra double quotes il nome della variabile:
#!/bin/bash #set -x rm -rf /tmp/test* NOME=$(/bin/ls *.mp3) echo Nome=""$NOME"" #test file.mp3 ssh localhost mkdir /tmp/\""$NOME\""-dir # Notare che la variabile contenente spazi viene quoata # DUE volte se è riferita alla parte remota scp "$NOME" localhost:/tmp/\""$NOME\""-dir # Notare che la variabile viene quotata # UNA volta se specificata in locale # DUE volte se viene specificata in remoto