使用bash读取来获取完整的用户输入

时间:2014-11-26 15:36:16

标签: bash

简单的问题。

我的脚本要求用户输入,然后尝试对该输入执行某些操作。但是当使用read命令时,我只得到用户输入的第一个单词(由空格分隔)。无论我是否输入带引号的响应,这似乎都会发生。最好不要求用户在引号中键入其消息。

以下是代码:

echo "what is your commit message?"
read commitmessage

如果处于put:这是自动提交或“这是自动提交”

Bash只将$commitmessage理解为"This"

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题不是read:我打赌你在使用它时不引用变量

$ read -p "message? " msg
message? hello world this is a message
$ echo "$msg"
hello world this is a message

使用变量时,请务必引用它:"$msg"
否则,shell将在空白(或$ IFS中的任何内容)上拆分值

一个例子:

$ function first_word { echo "$1"; }
$ first_word "$msg"
hello world this is a message
$ first_word $msg
hello