Tato otázka zde již obsahuje odpovědi :Proč se můj skript shellu dusí mezerami nebo jinými speciálními znaky?
(6 odpovědí)
Uzavřeno před 6 lety.
Linux
(6 odpovědí)
Uzavřeno před 6 lety.
Snažím se uniknout mezerníku pro cestu v Bash, ale ani použití zpětného lomítka nebo uvozovek nefunguje.
.sh skript:
ROOT="/home/hogar/Documents/files/"
FILE=${ROOT}"bdd.encrypted"
DESTINATION="/home/hogar/Ubuntu\ One/folder"
mv ${FILE} ${DESTINATION}
Po spuštění skriptu (./file
) toto je výsledek:
mv: target 'One/folder' is not a directory
Proč mv
příkaz rozdělit řetězec a jak tomu zabráním?
Přijatá odpověď:
Pokud jste provedli echo
, rozšiřujete proměnnou DESTINATION toto byste dostali:
echo ${DESTINATION}
/home/hogar/Ubuntu\ One/folder
Ale mv
nerozumí tomu:
mv ${FILE} ${DESTINATION}
mv: cannot move '/home/hogar/Documents/files/bdd.encrypted' to '/home/hogar/Ubuntu\\ One/folder': No such file or directory
(z nějakého důvodu je můj mv podrobnější)
Abyste tomu zabránili, měli byste místo toho používat uvozovky:
mv "${FILE}" "${DESTINATION}"
Pokud rozšíření nepotřebujete (protože jste již expandovali dříve), stačí použít "$..."
by mělo stačit:
mv "$FILE" "$DESTINATION"
Emulace zařízení USB se souborem pomocí G_mass_storage => Udc-core:Nelze najít dostupné Udc – přidáno [g_mass_storage] do seznamu čekajících ovladačů?
Linux – Jak odinstalovat Grub?