如何用if或case语句实现Shell脚本command.sh的--value参数功能
解决方法
你的代码问题出在case语句的匹配模式上:[--value ]是字符集合匹配,会匹配-、v、a、l、u、e、空格中的任意单个字符,而不是精确匹配整个--value字符串,所以无法正确识别参数。
下面是两种正确的实现方式:
用case语句实现
case "$1" in --value) # 检查是否传入了后续的string参数 if [ -n "$2" ]; then echo "You chose value: $2" else echo "错误:--value 需要一个字符串参数" fi ;; *) echo "请选择有效的选项(格式:--value string)" ;; esac
运行command.sh --value test时,会输出You chose value: test;如果只输入command.sh --value,会提示缺少参数。
用if语句实现
if [ "$1" = "--value" ]; then if [ -n "$2" ]; then echo "You chose value: $2" else echo "错误:--value 需要一个字符串参数" fi else echo "请使用有效的选项:--value string" fi
逻辑和case版本一致,通过精确比较$1是否等于--value,再判断$2是否存在来获取传入的string。
内容的提问来源于stack exchange,提问作者dav
相关产品推荐
相关产品推荐

