0

我正在使用 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.
4

2 回答 2

2

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

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

echo "$help"
于 2020-11-05T02:15:13.237 回答
0

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

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

IFS=$'\n'

printf '%s\n' $help

unset IFS

你也可以做 afor 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:如何在 sh 的字符串中添加换行符?

于 2020-11-05T02:00:51.640 回答