(1)
#!/bin/bashread -p "Please input a character:" scase $s in[0-9])echo 数字;;[a-z])echo 小写字母;;[A-Z])echo 大写字母;;
esac
演示
(2)
#!/bin/bash read -p "请输入一个字符: " char if [[ $char =~ [A-Z] ]]; then echo "你输入的是大写字母。"
elif [[ $char =~ [a-z] ]]; then echo "你输入的是小写字母。"
elif [[ $char =~ [0-9] ]]; then echo "你输入的是数字字符。"
else echo "你输入的不是大写字母、小写字母或数字字符。"
fi
在Bash shell脚本中,[[ ]]
是一个条件表达式,它是test
命令的一个扩展,提供了更强大且灵活的字符串和模式匹配功能。与老的[]
测试结构相比,[[ ]]
有以下几点优势:
-
字符串比较:
[[ ]]
支持直接的字符串比较和模式匹配,而[]
通常与=
、!=
等操作符结合使用来进行字符串比较。 -
模式匹配:
[[ ]]
使用=~
操作符来进行正则表达式匹配,这是[]
所不具备的。 -
逻辑操作符:
[[ ]]
支持更丰富的逻辑操作符,如&&
、||
,以及!
来进行逻辑否定。而[]
则使用-a
、-o
和!
,这些在[]
中的操作符有时可能会与文件测试操作符混淆。 -
字符串操作:
[[ ]]
还支持字符串操作,比如子串检查、长度检查等。 -
可读性:
[[ ]]
通常认为在语法上更清晰,提高了脚本的可读性。 -
兼容性:虽然
[]
在POSIX shell中是标准的,但[[ ]]
在Bash、Korn shell (ksh)、Z shell (zsh) 等中也被广泛支持。 -
避免某些问题:
[]
在处理某些字符时可能会遇到问题,比如空格和特殊字符,而[[ ]]
则能更好地处理这些情况。