user17925
user17925

Reputation: 1019

is bash getopts function destructive to the command-line options?

Can you use the bash "getopts" function twice in the same script?

I have a set of options that would mean different things depending on the value of a specific option. Since I can't guarantee that getopts will evaluate that specific option first, I would like to run getopts one time, using only that specific option, then run it a second time using the other options.

Upvotes: 4

Views: 2406

Answers (2)

Rob Wells
Rob Wells

Reputation: 37133

getopts does not modify the original arguments, as opposed to the older getopt standalone executable. You can use the bash built-in getopts over and over without modifying your original input.

See the bash man page for more info.

HTH.

cheers,

Rob

Upvotes: 2

andrewdotn
andrewdotn

Reputation: 34863

Yes, just reset OPTIND afterwards.

#!/bin/bash

set -- -1
while getopts 1 opt; do
    case "${opt}" in
        1) echo "Worked!";;
        *) exit 1;
    esac
done

OPTIND=1
set -- -2
while getopts 2 opt; do
    case "${opt}" in
        2) echo "Worked!";;
        *) exit 1;
    esac
done

Upvotes: 5

Related Questions