A="$(echo string1)
$(echo string2)";
# test it now:
echo -n "$A"|od -c
000000 s t r i n g 1 \n s t r i n g 2
0000017
如果你不喜欢打破压痕,换行就成了一件珍贵的事情。但是有很多方法可以得到它:
# NL will contain line-break char
printf -v NL "\n";
# Or trick by inserting and removing X
NL="$(echo -e '\nX')"; NL="${NL/X}";
#test:
echo -n "$NL" | od -c
0000000 \n
0000001
# use it:
A="$(echo string1)$NL$(echo string2)";
# test it now:
echo -n "$A"|od -c
000000 s t r i n g 1 \n s t r i n g 2
0000017
4条答案
按热度按时间vqlkdk9b1#
dluptydi2#
我不确定我是否理解OP的要求;如果这仅仅是两个字符串的换行.
使用
printf -v
的一个想法:或者更简单地说:
zynd9foi3#
你可以只插入一个换行符(如果你不介意扭曲缩进):
如果你不喜欢打破压痕,换行就成了一件珍贵的事情。但是有很多方法可以得到它:
或者我们可以把它变成一行程序。我也可以用
hexdump
代替od
进行测试。-v B
表示将结果存储到变量B
中,而不是将其打印出来。\n
不需要评论。%s
类似于C
中的printf()
函数,参数作为命令行上的参数。(如果不想丢失%
等,请不要使用printf -v B "$(echo foo%%)$(echo bar%d)"
。它们在第一个参数中具有占位符功能。)anauzrmj4#
它具有可以添加和删除任何字符串的功能,并且在第一个字符串之前不会有新行。