Pertanyaan ini sudah memiliki jawaban di sini :Mengapa skrip shell saya tersedak spasi atau karakter khusus lainnya?
(6 jawaban)
Tutup 6 tahun yang lalu.
Linux
(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"
Meniru Perangkat Usb Dengan File Menggunakan G_mass_storage => Udc-core:Tidak Dapat Menemukan Udc yang Tersedia – Menambahkan [g_mass_storage] Ke Daftar Driver Tertunda?
Linux – Bagaimana Cara Menghapus Instalasi Grub?