如何在响应提示时在Bash上创建换行符



我正在使用Bash创建一个README文件。在文件中添加描述时,我希望文本显示为2段。如何在第一段之后创建换行符?我试过"n",但什么也没发生。

继续我的评论。您希望能够将格式化的文本块写入文件(或写入终端/dev/stdout(的是heredoc。heredoc将按照格式在和开始和结束标记之间写出行。(传统上使用EOF,但它可以是您喜欢的任何内容(。形式为:

cat << EOF
Your text goes here
and here
and here, etc...
EOF

如果要写入文件,请使用cat >filename << EOF作为打开位置。如果您的文本中有不希望展开的变量(例如$myvar,您希望写为$myvar,而不是它包含的内容(,请引用开头标签,例如'EOF'(

在您的情况下,如果您想从脚本中写入文件名,那么只需使用上面的表单。如果没有文件名作为脚本的参数,例如,则可以使用默认初始化写入终端

#!/bin/bash
fname="${1:-/dev/stdout}"    # set filename to write to (stdout by default)
# heredoc
cat >"$fname" << EOF
My dog has fleas and my cat has none. Lucky cat. My snake has
scales and can't have fleas. Lucky snake.
If the animals weren't animals could they still have fleas?
EOF

如果在没有参数的情况下调用,则将heredoc打印到终端(/dev/stdout(。如果给定文件名,则heredoc输出将重定向到文件名,例如

$ bash write-heredoc.sh README

用heredoc内容填充README文件,例如

$ cat README
My dog has fleas and my cat has none. Lucky cat. My snake has
scales and can't have fleas. Lucky snake.
If the animals weren't animals could they still have fleas?

您可以根据需要包括空行。如果您想使用多个heredocs追加到README文件,那么只需使用cat >>filename << EOF进行追加,而不是截断。

最新更新