GNU/Linux >> Znalost Linux >  >> Linux

Máte potíže ve skriptu s mezerami v názvu souboru?

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.)


Linux
  1. Spuštění skriptu s „. “ A se „zdrojem“?

  2. Předávání názvu souboru s mezerami do skriptu Shell?

  3. Skript náhle skončí s ukončenou zprávou?

  1. Prostory pro proměnné ve skriptu Bash?

  2. Spustit skript s argumenty jako uživatel?

  3. Proč nemohu uniknout mezerám ve skriptu Bash?

  1. základní jméno s mezerami ve skriptu bash?

  2. Přidání časového razítka k názvu souboru s mv v BASH

  3. nemůže zdrojový skript v aktuálním adresáři