Bash中read命令指定变量并使用-p选项的正确实现(无需echo)
解决read命令指定变量并使用-p选项的问题
嘿,这问题其实是个很容易踩的小语法坑!
错误原因
你把变量名foo放在了-p选项前面,但read命令的规则是所有选项必须写在变量名之前——bash会把你写在变量位置的-p当成变量名去解析,自然就报错说-p不是有效的标识符啦。
正确写法
只需要调整一下顺序,把-p选项移到变量名前面,就能同时实现提示输入和指定变量接收内容的需求,完全不需要额外调用echo:
$ read -p "Enter a numeral: " foo Enter a numeral: 4
之后直接用$foo就能访问输入的内容了:
$ echo $foo 4
补充小知识点
read命令的语法逻辑是:先声明所有需要的选项(比如-p、-r这类),之后再写要赋值的变量名;- 只有当你不指定变量时,输入内容才会默认赋值给
REPLY变量,这也是你第一个示例能正常运行的原因。
内容的提问来源于stack exchange,提问作者Wizard
相关产品推荐
相关产品推荐

