Answers:
那echo -n
是为了什么。
cat
吗?(例如,当您有文件something.txt
而不是变量时$something
)
如果使用命令的输出,则可以将xargs与echo结合使用
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr
是另一种选择。
如果您使用echo
输入作为输入,则可以忽略其中的一个tr -d '\n'
。
当通过管道传递其他命令的输出(仅输出一行)时,该技术也适用。此外,如果您不知道文件是否具有UNIX或DOS行尾,则可以使用tr -d '\n\r'
。
这里有一些测试表明这可行。
换行符包括:
something='0123456789' ; echo ${something} | wc -c
11
UNIX换行符:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
DOS风格:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
经过BSD tr
和GNU 测试tr
。
echo $something
,它的行为取决于IFS
变量,并且最终可能会导致字符消失。您可以尝试以下操作:var="hello world"; echo $var
(hello和world之间的两个空格)或var="hello world"; IFS='l'; echo $var
或var="-e hello \\n world"; echo $var
。要解决此问题,请在变量周围加上双引号,例如:echo "$var"
或使用printf
。