Saya punya skrip yang merupakan file dari host jarak jauh ke lokal. Terkadang nama file berisi spasi. scp tidak suka spasi di nama file-nya. Untuk beberapa alasan upaya saya dalam menangani spasi belum menghasilkan jalur scp yang benar.
Kode:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH Me@10.1.10.33:/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.
Bertukar ruang untuk ruang yang lolos juga tidak berfungsi, meskipun sejauh yang saya tahu seharusnya:
ESC_PATH=${PATH/' '/'\ '}
meskipun mencetak jalur yang diloloskan menunjukkan bahwa hasil edit bekerja:
echo $ESC_PATH
> /var/root/Documents/MyFile\ OG-v1.2.3.pkg
$PATH
untuk variabel Anda sendiri, karena terminal Anda membutuhkannya.Jawaban:
Anda harus mengutip deklarasi dan penggunaannya
Jika Anda tidak mengutip yang pertama,
$path
hanya akan berisi bagian pertama. Jika Anda tidak mengutip yang kedua,scp
akan memperlakukan setiap bagian yang dipisahkan ruang sebagai argumen.(Saya telah berubah
$PATH
menjadi$path
karena$PATH
merupakan variabel cadangan penting dan Anda tidak boleh menggunakannya untuk tujuan umum.)sumber
Saya mencoba sesuatu yang sangat mirip dengan ssh dan melewati baris perintah melaluinya. misalnya
Saya menemukan bahwa hanya mendefinisikan "$ PATH" tidak berhasil - itu masih memunculkan kesalahan. Namun jika saya berlari
Ini berhasil. Triknya adalah untuk memastikan set "" tambahan diteruskan ke perintah ssh dari shell.
sumber