bash脚本中扩展字符串中的行继续

时间:2016-01-12 23:20:01

标签: bash shell

是否可以执行以下操作:

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

1 个答案:

答案 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
$