Jawaban:
Itu untuk apa echo -n
.
cat
? (mis. ketika Anda memiliki file something.txt
daripada variabel $something
)
printf
sangat fleksibel dan lebih portabel daripada echo
. Seperti implementasi C / Perl / etc, jika Anda tidak mengakhiri string format dengan \n
maka 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 echo
input 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 tr
dan GNU tr
.
echo $something
, perilakunya tergantung padaIFS
variabel, 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 $var
atauvar="-e hello \\n world"; echo $var
. Untuk mengatasinya, letakkan tanda kutip ganda di sekitar variabel seperti ini:,echo "$var"
atau gunakanprintf
.