我发现这是从命令行获取用户输入的。但它无法识别我输入输入的换行符。正在做:
#!/bin/bash
read -e -p "Multiline input=" variable;
printf "'variable=%s'" "${variable}";
- 输入使输出
'multi\nline'
_Multiline input=
printf
'variable=multinline'
- 输入使输出
'multi\\nline'
_Multiline input=
printf
'variable=multi\nline'
如何printf
打印我读取的新行read -p
,即输出
multi
line
而不是multinline
or multi\nline
?
相关问题:
如果输入
\n
(如两个字符\
和n
)是可以接受的,那么您可以使用printf
它来解释它:例如:
从bash 手册:
“行继续”位似乎暗示您无法转义换行符,除非您使用不同的字符作为行分隔符。
@muru 有正确的 bash 答案。
另一种选择:让
printf
处理反斜杠序列,但您必须小心%
输入中的字符我没有使用
bash
or的某些功能,而是将转义的换行符替换为实际的换行符:printf
sed
\\n
参考: