GNU/Linux >> Belajar Linux >  >> Linux

Masalah Dalam Skrip Dengan Spasi Di Nama File?

Saya punya skrip yang scp adalah file dari host jarak jauh kembali ke lokal. Terkadang nama file mengandung spasi. scp tidak menyukai spasi dalam nama filenya. Untuk beberapa alasan, upaya saya dalam menangani spasi tidak menghasilkan jalur scp yang benar.

Kode:

PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop

Hasil dalam

Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg

Melampirkan PATH dalam tanda kutip "$PATH" memberikan kesalahan yang sama.

Menukar ruang untuk ruang yang lolos juga tidak berfungsi, meskipun sejauh yang saya tahu seharusnya:

ESC_PATH=${PATH/' '/' '}

meskipun mencetak jalur lolos menunjukkan bahwa pengeditan berhasil:

echo $ESC_PATH
> /var/root/Documents/MyFile OG-v1.2.3.pkg

Jawaban yang Diterima:

Anda harus mengutip pernyataan dan penggunaannya

path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop

Jika Anda tidak mengutip yang pertama, $path akan berisi hanya bagian pertama. Jika Anda tidak mengutip yang kedua, scp akan memperlakukan setiap bagian yang dipisahkan oleh spasi sebagai argumen.

(Saya telah mengubah $PATH ke $path karena $PATH adalah variabel cadangan yang penting dan Anda tidak boleh menggunakannya untuk tujuan umum.)


Linux
  1. Menjalankan Script Dengan “. ” Dan Dengan “sumber”?

  2. Ssh – Skrip Untuk Mengotomatiskan Scp Dalam Jaringan?

  3. Melewati Nama File Dengan Spasi Ke Skrip Shell?

  1. Script Berakhir Tiba-tiba Dengan Pesan yang Dihentikan?

  2. Spasi Untuk Variabel Dalam Skrip Bash?

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

  1. Menambahkan stempel waktu ke nama file dengan mv di BASH

  2. sed menyisipkan baris dengan spasi ke baris tertentu

  3. Direktori perubahan skrip Shell dengan variabel