所以我有一个关于在bash中获得选择的问题。我想获取参数的值(如果存在),但是如果不存在,则使用默认值。因此,脚本应该使用目录和整数,但是如果未指定它们,则$ PWD和3应该是默认值。这是什么

while getopts "hd:l:" opt; do
    case $opt in
        d ) directory=$OPTARG;;
        l ) depth=$OPTARG;;
        h ) usage
        exit 0;;
        \? ) usage
        exit 1;;
    esac

最佳答案

您可以在while循环之前提供默认值:

directory=mydir
depth=123
while getopts "hd:l:" opt; do
    case $opt in
        d ) directory=$OPTARG;;
        l ) depth=$OPTARG;;
        h ) usage
        exit 0;;
        *) usage
        exit 1;;
    esac
done
echo "<$directory> <$depth>"

10-04 16:24