【发布时间】:2015-09-20 12:32:50
【问题描述】:
TABLE=`echo "${1}" | tr '[:upper:]' '[:lower:]'`
if [ $1 = -d ]
then TABLE=daminundation
elif [ $1 = -b ]
then TABLE=burnscararea
elif [ $1 = -r ]
then TABLE=riverpointinundation
elif [ $1 = " " ]
then echo "User must input -d (daminundation), -b (burnscararea)
or -r (riverpointinundation)."
fi
SHAPEFILEPATH=${2}
MERGEDFILENAME=${3}
if [ -z $3 ] ;
then MERGEDFILENAME=merged.shp
else
MERGEDFILENAME=${3}
fi
COLUMNNAME=${4}
if [ -n $4 ]
then COLUMNNAME=$4
fi
$3 & $4 是可选参数。但是,如果我选择不使用 $3 但我想使用 $4,它会将命令读取为 $3。被其他方法弄糊涂了,我应该怎么做才能让下一个不需要的可选命令绕过?
【问题讨论】:
-
./your_script.sh param_1 param_2 "" param_4 -
你在找getopts
-
@LucM 第一个选项适用于简单的解决方案,getopts 似乎是更有条理的解决方案。谢谢。
标签: bash command-line-arguments argument-passing