有人可以检查这段代码片段并告诉我为什么当我用-p abcdef调用这个脚本时,$ OPTARG从来没有传入的参数值?
# Process command-line options passed as switches to this script
while getopts "ph:" option; do
case "$option" in
p)
{
if [ -n "$OPTARG" ]; then
echo
echo "##### SCRIPT ERROR: You failed to provide a host prefix. #####"
echo
usage
break
else
echo "Setting host prefix to '$OPTARG'"
echo
HOST_PREFIX=$OPTARG
fi
} ;;
h) usage ;;
'?') usage ;;
*) break ;;
esac
done
shift "$((OPTIND-1))" # Shift off the options and optional --.
答案 0 :(得分:4)
所有需要参数的选项必须由:
继承,它应该写为p:h
,因为h
选项不需要参数。