Bash - 从缩进的多行字符串中删除空格

Pan*_*kes 5 bash printf indentation echo

这可能是一个更普遍的问题,所以提前抱歉。我正在创建一个脚本,并认为使用多行字符串而不是使用多个 printf 或 echo 语句会更好。假设我有以下内容:

while :
do
 printf "line 1
 line 2
 line 3"
done
Run Code Online (Sandbox Code Playgroud)

由于文件中的缩进,第二行和第三行将在前面打印一个空格。

l1
 line 2
 line 3
Run Code Online (Sandbox Code Playgroud)

除了删除代码上的缩进之外,还有其他方法可以防止这种情况发生吗?另外,如果您需要输出跨多行的信息,那么仅使用多个 printf/echo 语句是否被认为是更好的做法?

Cyr*_*rus 5

使用制表符缩进(此处为空格)并使用定界符(使用<<-

cat <<- EOF
  line 1
  line 2
  line 3
EOF
Run Code Online (Sandbox Code Playgroud)

  • **注意:** 注意“*缩进*`制表符`”(空格不行)。如果您的编辑器插入空格而不是“制表符”,那么您可以取消缩进并简单地使用“&lt;&lt;”作为 *heredoc* 标志。 (2认同)