String Bash:在命令行上输入空格保留字符串?

String Bash:在命令行上输入空格保留字符串?,string,bash,input,String,Bash,Input,我希望使用空格捕获字符串,以便: echo -n "Enter description: " read input echo $input 将产生: > Enter description: My wonderful description! > My wonderful description! 可能吗?需要担心的主要问题是,当引用变量时,如果没有将其括在双引号中,shell会进行分词(在有空格或其他空格字符的地方将其拆分为多个单词)以及通配符扩展。解决方案:在引用变量时使用双

我希望使用空格捕获字符串,以便:

echo -n "Enter description: "
read input
echo $input
将产生:

> Enter description: My wonderful description!
> My wonderful description!

可能吗?

需要担心的主要问题是,当引用变量时,如果没有将其括在双引号中,shell会进行分词(在有空格或其他空格字符的地方将其拆分为多个单词)以及通配符扩展。解决方案:在引用变量时使用双引号(例如,
echo“$input”

其次,
read
将修剪前导和尾随空格(即输入开头和/或结尾的空格)。如果您关心这一点,请使用
IFS=read
(这基本上消除了它对空白的定义,因此不会修剪任何内容)。您可能还想使用
read
-r
(“raw”)选项,这样它就不会试图将行尾的反斜杠解释为连续字符

最后,我建议使用
read
-p
选项提供提示(而不是
echo-n

通过所有这些更改,您的脚本如下所示:

IFS= read -r -p "Enter description: " input
echo "$input"

它在您的系统上产生了什么?您可能应该引用
“$input”
,但不清楚您看到了什么错误。哦,是的,谢谢,我没有收到错误,但字符串在第一个空格处被拆分<代码>“$input”,这很有帮助!有时候,最好是让别人去问常见问题,而不是重新发明轮子。和