boo*_*ull 1 bash shell-script error-handling test
我有一个 bash 脚本,它曾经要求用户进行确认。我通过读取单个字符来做到这一点,然后将其转换为小写并检查它是否为“y”。如果不是,则脚本退出。
现在,如果我只是在输入读取上按 Enter,我会得到error: unary operator expected. 如何防止此问题或捕获错误?
代码片段:
echo -ne "Confirm [y/n]: "
read -n1 uc
if [ ${uc,,} != "y" ]
then
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
此语句应该正常工作:
if [ "${uc,,}" != "y" ]
Run Code Online (Sandbox Code Playgroud)
说明:当uc为空时,shell 将按如下方式扩展您的测试:
if [ != "y" ]
Run Code Online (Sandbox Code Playgroud)
而带引号的是
if [ "" != "y" ]
Run Code Online (Sandbox Code Playgroud)
经验法则:在扩展包含字符串的 shell 变量周围始终使用引号;它们可能包含空格或为空,当不加引号时,通常会混淆它们传递给的命令(参数过多或缺失)。
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |