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öreIFS
değ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 $var
veyavar="-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
.