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。