我想允许用空格捕获字符串,以便:
echo -n "Enter description: "
read input
echo $input
Run Code Online (Sandbox Code Playgroud)
会产生:
> Enter description: My wonderful description!
> My wonderful description!
Run Code Online (Sandbox Code Playgroud)
可能?
Gor*_*son 15
担心的主要问题是,当你引用变量没有双引号括起来,shell就分词(将其分解成多个字的地方有一个空格或其他空白字符),以及通配符扩展.解决方案:每当引用变量时使用双引号(例如echo "$input").
其次,read将修剪前导和尾随空格(即输入开头和/或末尾的空格).如果您关心这一点,请使用IFS= read(这基本上消除了它对空格的定义,因此不会修剪任何内容).您可能还想使用read's -r("raw")选项,因此它不会尝试将行末尾的反斜杠解释为延续字符.
最后,我建议使用read's -p选项来提供提示(而不是echo -n).
通过所有这些更改,您的脚本如下所示:
IFS= read -r -p "Enter description: " input
echo "$input"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10978 次 |
| 最近记录: |