bash多行字符串缩进问题?

问题:
怎么使字符串b输出时每行缩进4个空格?
图片描述

希望得到的效果:
图片描述

求教!

回答:

如果要求是除了第一行,都缩进,用sed很方便:

a="test message:"

b="a\nb\nc\nd\n"

c="$a\n$b"

printf "$c" | sed '1!s/^/ /'

或者使用bash的参数替换功能,"\n"对bash来说,只是两个普通字符,在它后面加4个空格就是了:

printf "${c//\\n/\n    }"

如果是希望给变量b加上缩进,那可以:

b="$(printf $b | pr -to4)"

回答:

a="test message:"

s=" "

b="$s"a"\n$s"b"\n$s"c"\n$s"d"\n"

c="$a\n$b"

printf "$c"

clipboard.png

回答:

a="test message"

b="a b c d"

c="$a $b"

printf '%s %4s\n%4s\n%4s\n%4s\n%4s\n' $c

test message

a

b

c

d

回答:

可以这样:

a="test message:"

b="\ta\n\tb\n\tc\n\td\n"

c="$a\n$b"

printf "$c"

以上是 bash多行字符串缩进问题? 的全部内容, 来源链接: utcz.com/p/193501.html

回到顶部