如何在 blockquote 中的行尾添加换行符以进行打印?

How do I add newline character at end of lines in blockquote for printing?

我正在使用 MacOS 和 Bash 4.4.23.

我希望能够在单个字符串中使用长块引用来进行帮助对话,并且 在程序中打印出来。

假设我在 var help

中有一个字符串
help='Searches a user to
see if he exists.'

help2='Searches a user to\n
see if he exists.'

echo $help # all one line
echo $help2 # all one line (with literal \n)

printf $help # prints 'Searches'
printf $help2 # same ^

我也试过了

help3=$'Searches a user\n
to see if he exists.'

但我仍然没有得到预期的结果。

我要打印的内容:

Searches a user to
see if he exists.

通过查找字符串拆分选项,我发现我可以做到这一点

help='Searches a user
to see if he exists.'

IFS=$'\n'

printf '%s\n' $help

unset IFS

您也可以执行 for line in $help; do echo $line done 而不是使用 printf 命令。

来源:https://unix.stackexchange.com/questions/184863/what-is-the-meaning-of-ifs-n-in-bash-scripting

src2: How can I have a newline in a string in sh?

$help设置正确;需要修复的是扩展时。根据经验,您应该几乎总是在展开变量时引用变量。在这里这样做将保留嵌入的换行符。

help='Searches a user to
see if he exists.'

echo "$help"