这可能是一个更加一般性的问题,所以提前道歉。我正在创建一个脚本,并认为使用多行字符串会比使用多个printf或echo语句更好。假设我有以下内容:
while :
do
printf "line 1
line 2
line 3"
done
第二行和第三行前面会有一个空格打印出来,因为文件中有缩进。
l1
line 2
line 3
除了去除代码缩进之外,有没有其他方法防止这种情况?另外,如果需要输出跨越多行的信息,只使用多个printf / echo语句是否被认为是更好的做法?
这可能是一个更加一般性的问题,所以提前道歉。我正在创建一个脚本,并认为使用多行字符串会比使用多个printf或echo语句更好。假设我有以下内容:
while :
do
printf "line 1
line 2
line 3"
done
l1
line 2
line 3
多行字符串看起来总是有点丑陋,或者有一些其他的缺点,我很遗憾。在 bash 代码中嵌入它们最易读的方法可能是使用 here-doc,它几乎完全显示了字符串输出时的样子。作为额外的技巧,您可以使用额外的标点符号使 here-doc 分隔符从字符串本身中脱颖而出,像这样:
if true
then
some commands
cat <<"____EndOfTextBlock____"
This text here
spans multiple
lines.
____EndOfTextBlock____
some other commands
even more commands
fi
sed
将其从输出中删除。cat << EOT | sed 's/^ *//g'
line1
line2
line3
EOT
<<
作为“heredoc” sigil。 - David C. Rankin