Search code examples
bashshellscriptinggetopts

bash getopts multiple arguments or default value


So I have a question about get opts in bash. I want to get the value of the arguments if they are present but if they are not present to use a default value. So the script should take a directory and an integer but if they aren't specified then $PWD and 3 should be default values. Here is what

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

Solution

  • You can just provide default value before while loop:

    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>"