Yanıtlar:
Bu ne echo -n için .
cat? (örneğin, bir dosyanız olduğunda something.txt değişken değil $something )
printf çok esnek ve daha taşınabilir echo. Format dizesini sonlandırmazsanız C / Perl / etc uygulamaları gibi \n sonra yeni satır yazdırılmaz:
printf "%s" "$something" >> file.txt
Komutun çıktısını kullanıyorsanız, xargs'ı echo ile birlikte kullanabilirsiniz
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr başka bir alternatif.
Kullanıyorsanız echo girişiniz olarak hangi tr -d '\n'.
Bu teknik, diğer komutlardan çıkışta borulama yaparken de çalışır (yalnızca tek bir çıkış satırı ile). Ayrıca, dosyaların UNIX veya DOS satır sonları olup olmadığını bilmiyorsanız, kullanabilirsiniz tr -d '\n\r'.
İşte bunun işe yaradığını gösteren bazı testler.
Newline dahil:
something='0123456789' ; echo ${something} | wc -c
11
UNIX newline:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
DOS tarzı:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
BSD ile test edildi tr ve GNU tr.
echo $something, davranışına göreIFSdeğişken ve kaybolan bir karakterle sonuçlanabilir. Aşağıdakileri deneyebilirsiniz:var="hello world"; echo $var(merhaba ve dünya arasında iki boşluk) veyavar="hello world"; IFS='l'; echo $varveyavar="-e hello \\n world"; echo $var. Bunu çözmek için, bu değişkenin etrafına çift tırnak işareti koyun:echo "$var", veya kullanprintf.