Bash脚本read -p定义变量无法正常读取引发条件判断报错如何解决
Bash大小写转换脚本错误修复方案
错误原因总览
[1: command not found报错的核心是Bash中[是内置命令,必须和后续的判断条件、结尾的]之间保留空格,你现有的判断语句没有加空格,导致系统把["$CASE"拼接后的内容识别成了不存在的命令。
除此之外你的脚本还有3处逻辑错误:
- 错误使用
cat "$WORD"读取用户输入的字符串:cat是读取文件内容的命令,$WORD是用户直接输入的文本不是文件名,不需要用cat - 小写转换的判断条件和提示不符:你提示用户输入2转小写,但判断条件写的是
== "0" - 提示语中的双引号嵌套错误,会导致语法异常
修复后的完整代码
#!/bin/bash read -p "Enter in your sentence, word or phrase: " WORD read -p "Enter 1 to change the case to UPPER or 2 to change the case to LOWER: " CASE if [ "$CASE" == "1" ] then echo "$WORD" | tr [:lower:] [:upper:] elif [ "$CASE" == "2" ] then echo "$WORD" | tr [:upper:] [:lower:] else echo "Please select either '1' for upper or '2' for lower." fi
关键修改点说明
- 给判断语句的
[后、]前都加了空格,符合Bash语法要求 - 去掉了冗余的
cat和$()包裹,直接把$WORD的内容通过管道传给tr处理 - 将小写转换的判断条件从
== "0"改成了== "2",和用户提示保持一致 - 把else分支提示语里嵌套的双引号改成单引号,避免语法冲突
- 脚本开头添加了
#!/bin/bash声明,指定运行用的解释器
内容的提问来源于stack exchange,提问作者Armaan
相关产品推荐
相关产品推荐

