katakanlah, saya dapat rsh ke mesin XXX sebagai pengguna foo, lalu setelah menjalankan:
$result=$(rsh -l foo XXX "ls");
echo $result;
Saya menemukan bahwa umpan baris dihapus dalam hasil, dan saya tidak dapat melihat hasilnya dalam cara baris demi baris. jadi apa yang harus saya lakukan jika saya ingin memiliki umpan baris ke dalam hasil yang dikembalikan?
rsh=$(rsh -l foo XXX "ls")
. Tanda titik koma adalah mubazir tetapi tidak berbahaya.Jawaban:
Baris baru ada di sana; kesalahan dalam menggunakannya
echo
untuk memeriksanya (tanpa tanda kutip ganda di sekitar variabel, juga!)Dalam kasus sepele, Anda dapat pergi tanpa tanda kutip, tetapi kasus yang menarik bahkan mungkin berisi masalah keamanan.
Jika Anda hanya menangkap output standar
rsh
sehingga Anda dapat mencetaknya sendiri ke output standar, ini adalah penggunaan yang tidak bergunaecho
sumber
ssh
lebihrsh
dan tidak menggunakanls
dalam skrip.Sunting: Jika Anda bermaksud baris baru di antara setiap file, pastikan untuk mengutip hasilnya:
Ini akan menyimpan karakter apa pun kecuali NUL (
$'\0'
), yang tidak dapat disimpan dalam variabel Bash.Jika Anda maksudkan bahwa trailing newline hilang, maka ini adalah solusi paling sederhana yang saya tahu:
sumber