是否可以执行以下操作:
a="one"
b="two"
c="three"
str="
first=$a\n
second=$b\n
third=$c\n
"
printf $str
我尝试过:
str=" \
first=$a\n \
second=$b\n \
third=$c\n \
"
更新:这里有一系列的瑕疵。目标是只能在多行上创建一个字符串。例如,可以在javascript和python中完成。
lintest.sh
str1="
first line \n
second line \n
"
str2="
first line \n \
second line \n \
"
str3="
first line \
second line \
"
str4="
first line
second line
"
str5='first line\nsecond line\n'
a="first line"
b="second line"
str6="%s\n%s\n"
printf $str1
printf "\n"
printf $str2
printf "\n"
printf $str3
printf "\n"
printf $str4
printf "\n"
printf $str5
printf "\n"
printf $str6 \
"$a" \
"$b"
输出:
balter@exalab3:~/lbalter$ bash lintest.sh
first
first
first
first
first
first line
second line
答案 0 :(得分:1)
您只需要一个\n
,无论您想要在哪里换行,都需要\
(无需换行)。你搞砸了什么是打印$variable
:因为Bash将它插入到一个命令中就好像你只是在那里键入它一样,如果你想保留空格,你需要将它包装在引号中它包含。
a="one"
b="two"
c="three"
str="\
first=$a
second=$b
third=$c
"
printf "$str"
$ ./print.sh
first=one
second=two
third=three
$