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”,这很有帮助!有时候,最好是让别人去问常见问题,而不是重新发明轮子。和