我使用的是MacOS和Bash 4.4.23。
我希望能够在一个字符串中有一个长的块引号来进行帮助对话将其打印到程序中。
假设我在varhelp
中有一个字符串
help='Searches a user to
see if he exists.'
help2='Searches a user ton
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 usern
to see if he exists.'
但我仍然没有得到预期的结果。
我想要打印的内容:
Searches a user to
see if he exists.
$help
设置正确;需要修复的是它何时扩展。根据经验,当变量展开时,您几乎应该总是引用它们。在此处执行此操作将保留嵌入的换行符。
help='Searches a user to
see if he exists.'
echo "$help"
仔细查看字符串拆分选项,我发现我可以完成这个
help='Searches a user
to see if he exists.'
IFS=$'n'
printf '%sn' $help
unset IFS
您也可以执行for line in $help; do echo $line done
,而不是使用printf
命令。
src:https://unix.stackexchange.com/questions/184863/what-is-the-meaning-of-ifs-n-in-bash-scripting
src2:如何在sh中的字符串中添加换行符?