GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Saya Tidak Dapat Keluar dari Spasi Pada Skrip Bash??

Pertanyaan ini sudah memiliki jawaban di sini :Mengapa skrip shell saya tersedak spasi atau karakter khusus lainnya?

(6 jawaban)
Tutup 6 tahun yang lalu.

Saya mencoba keluar dari karakter spasi untuk jalur di Bash, tetapi menggunakan garis miring terbalik atau tanda kutip tidak berfungsi.

skrip .sh:

ROOT="/home/hogar/Documents/files/"
FILE=${ROOT}"bdd.encrypted"
DESTINATION="/home/hogar/Ubuntu\ One/folder"

mv ${FILE} ${DESTINATION}

Setelah menjalankan skrip (./file ) ini hasilnya:

mv: target 'One/folder' is not a directory

Mengapa mv perintah membagi string, dan bagaimana cara menghentikan ini terjadi?

Jawaban yang Diterima:

Anda memperluas variabel DESTINATION, jika Anda melakukan echo inilah yang akan Anda dapatkan:

echo ${DESTINATION}
/home/hogar/Ubuntu\ One/folder

Tapi mv tidak mengerti ini:

mv ${FILE} ${DESTINATION}                                                
mv: cannot move '/home/hogar/Documents/files/bdd.encrypted' to '/home/hogar/Ubuntu\\ One/folder': No such file or directory

(untuk beberapa alasan mv saya lebih bertele-tele)

Untuk mencegah hal ini, Anda harus menggunakan tanda kutip sebagai gantinya:

mv "${FILE}" "${DESTINATION}"

Jika Anda tidak membutuhkan ekspansi (karena Anda sudah melakukan ekspansi sebelumnya) cukup gunakan "$..." cukup:

mv "$FILE" "$DESTINATION"

Linux
  1. Bisakah Skrip Bash Dihubungkan ke File?

  2. Mengapa Skrip Bash Tidak Mengenal Alias?

  3. Bagaimana Cara Men-debug Skrip Bash?

  1. Mengapa Skrip Bash Tidak Keluar Setelah Eksekusi?

  2. Mengapa Saya Tidak Dapat Menggunakan Cd Dalam Skrip Bash??

  3. Mengapa Bash Tidak Menyimpan Perintah yang Dimulai Dengan Spasi?

  1. Mengapa cat /dev/urandom menggantung skrip bash saya?

  2. Pencocokan pola skrip Bash

  3. Jalankan perintah bash pada pipa jenkins