我想从变量中删除 \n 我找到了很多答案,其中说“使用 tr -d”但tr -d
对我不起作用
echo "$test" | od -c
0000000 4 4 2 5 2 \n
0000006
然后我用tr -d
test2=$(echo $test | tr -d '\n')
但没有任何改变
echo "$test2" | od -c
0000000 4 4 2 5 2 \n
0000006
答案1
使用tr -d '\n'
, 按预期删除\n
(即换行符)。但你正在用echo
命令验证这一点。Echo
命令本身会将换行符放在输入字符串的末尾,因此您无法看到预期的输出。
使用下面的命令集检查变量。
test2=$(echo "$test" | tr -d '\n')
printf "%s" $test2 | od -c
echo -n $test2 | od -c
脚本输出:
0000000 h e l l o
0000005
0000000 h e l l o
0000005
注意: echo -n :来自 echo 手册页: -n 不输出尾随换行符 printf :不在末尾附加 \n
答案2
echo
\n
默认是附加的。用于-n
省略
[6]root@lab7:~> echo 'lol' |od -c
0000000 l o l \n
0000004
[6]root@lab7:~> echo -n 'lol' |od -c
0000000 l o l
0000003