Mám skript, který scp je soubor ze vzdáleného hostitele zpět na místní. Někdy názvy souborů obsahují mezery. scp nemá rád mezery v názvech souborů. Z nějakého důvodu mé pokusy o manipulaci s mezerami nevedly ke správné cestě scp.
Kód:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop
Výsledky v
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
Uzavření PATH do uvozovek "$PATH"
dává stejnou chybu.
Výměna prostorů za uniklé prostory také nefunguje, ačkoli pokud mohu říci, mělo by:
ESC_PATH=${PATH/' '/' '}
ačkoli tisk cesty s escapováním ukazuje, že úprava proběhla:
echo $ESC_PATH
> /var/root/Documents/MyFile OG-v1.2.3.pkg
Přijatá odpověď:
Měli byste citovat jak prohlášení, tak použití
path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop
Pokud neuvedete první, $path
bude obsahovat pouze první část. Pokud neuvedete druhý, scp
bude každou část oddělenou mezerou považovat za argument.
(Změnil jsem $PATH
do $path
protože $PATH
je důležitá rezervovaná proměnná a nesmíte ji používat pro obecné účely.)