Jawaban:
Itu untuk apa echo -n.
cat? (mis. ketika Anda memiliki file something.txtdaripada variabel $something)
printfsangat fleksibel dan lebih portabel daripada echo. Seperti implementasi C / Perl / etc, jika Anda tidak mengakhiri string format dengan \nmaka tidak ada baris baru yang dicetak:
printf "%s" "$something" >> file.txt
Jika Anda menggunakan output perintah, Anda dapat menggunakan xargs dalam kombinasi dengan gema
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr adalah alternatif lain.
Jika Anda menggunakan echoinput Anda, Anda bisa pergi yang mana tr -d '\n'.
Teknik ini juga berfungsi ketika memipihkan output dari perintah lain (hanya dengan satu baris output). Selain itu, jika Anda tidak tahu apakah file memiliki ujung UNIX atau DOS yang dapat Anda gunakan tr -d '\n\r'.
Berikut adalah beberapa tes yang menunjukkan bahwa ini berhasil.
Baris baru termasuk:
something='0123456789' ; echo ${something} | wc -c
11
UNIX baris baru:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
Gaya DOS:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
Diuji dengan BSD trdan GNU tr.
echo $something, perilakunya tergantung padaIFSvariabel, dan Anda bisa berakhir dengan karakter yang hilang. Anda dapat mencoba yang berikut ini:var="hello world"; echo $var(dua jarak antara halo dan dunia) atauvar="hello world"; IFS='l'; echo $varatauvar="-e hello \\n world"; echo $var. Untuk mengatasinya, letakkan tanda kutip ganda di sekitar variabel seperti ini:,echo "$var"atau gunakanprintf.