read -p "Please Enter a Message:" message
Run Code Online (Sandbox Code Playgroud)
我怎样才能在之后添加换行符Message:
?
fer*_*raz 58
只是寻找完全相同的东西.您可以使用:
# -r and -e options are unrelated to the answer.
read -rep $'Please Enter a Message:\n' message
Run Code Online (Sandbox Code Playgroud)
它将完全按照要求工作:
Please enter a Message:
_
Run Code Online (Sandbox Code Playgroud)
以下是bash手册页的摘录解释:
$'string'形式的单词是专门处理的.单词扩展为字符串,替换为ANSI C标准指定的反斜杠转义字符.反斜杠转义序列(如果存在)按如下方式解码:
- (......)
- \n新行
- (......)
扩展结果是单引号,好像美元符号不存在一样.
花了一段时间才发现.
请注意,单引号和双引号在这方面的表现不同:
带有美元符号($)的双引号字符串将导致根据当前语言环境转换字符串.如果当前区域设置为C或POSIX,则忽略美元符号.如果翻译并替换字符串,则替换为双引号.
T.J*_*der 40
我喜欢Huang F. Lei的回答,但是如果你不喜欢文字换行符,这可行:
read -p "Please Enter a Message: `echo $'\n> '`" message
Run Code Online (Sandbox Code Playgroud)
显示:
Please Enter a Message: > _
... _
光标最终到达的位置.请注意,由于在命令替换期间通常会删除尾随换行符,因此我将其包含在后面>
.但实际上,你的原始问题似乎并不想要那个提示位,所以:
# Get a carriage return into `cr` -- there *has* to be a better way to do this
cr=`echo $'\n.'`
cr=${cr%.}
# Use it
read -p "Please Enter a Message: $cr" message
Run Code Online (Sandbox Code Playgroud)
展会
Please Enter a Message: _
但是必须有更好的方法.
Hua*_*Lei 12
$ read -p "Please Enter a Message:
> " message
Please Enter a Message:
Run Code Online (Sandbox Code Playgroud)
直接在':'和'''之间键入"换行符".
这是对可接受的答案的改进,不需要生成子shell:
read -p "Please Enter a Message:"$'\n' message
Run Code Online (Sandbox Code Playgroud)
表格
$'string'
中的单词经过特殊处理。该单词扩展为string,并按ANSI C标准的规定替换了反斜杠转义的字符。
只是为了改善我喜欢的Huang F. Lei和TJ Crowder的答案(并加上+1)..你也可以使用下列语法之一,基本上是相同的,这取决于你的口味(我更喜欢第一):
read -p "$(echo -e 'Please Enter a Message: \n\b')" message
read -p "`echo -e 'Please Enter a Message: \n\b'`" message
Run Code Online (Sandbox Code Playgroud)
两者都会产生以下输出:
Please Enter a Message:
_
Run Code Online (Sandbox Code Playgroud)
其中_是光标.
如果您需要在字符串的任何部分使用换行符,但结尾,您可以使用\n
,例如
read -p "`echo -e '\nPlease Enter\na Message: '`" message
Run Code Online (Sandbox Code Playgroud)
会产生
.
Please Enter
a Message: _
Run Code Online (Sandbox Code Playgroud)
哪里.是一个空白的第一个新行,_是光标.
只需添加一个你必须使用的最终尾随换行符,\n\b
就像在我的第一个例子中一样
归档时间: |
|
查看次数: |
46384 次 |
最近记录: |