GNU/Linux >> Znalost Linux >  >> Linux

Proč nemohu uniknout mezerám ve skriptu Bash?

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.

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"

Linux
  1. Proč skript Bash nerozpozná aliasy?

  2. Jak ladit Bash skript?

  3. Proč se skript Bash po spuštění neukončí?

  1. Proč nemohu použít CD ve skriptu Bash?

  2. Proč Bash neukládá příkazy, které začínají mezerami?

  3. Tomuto skriptu nerozumím. Bash?

  1. Jak nahradit mezery v názvech souborů pomocí bash skriptu

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

  3. Proč cat /dev/urandom zavěsil můj bash skript?