#! /bin/bash # This "prepare" block will cause evalParams(): # .tar.gz bash30-016: disfunction ('case $opt' not executed) # Fedora bash-3.0-18: disfunction ('case $opt' not executed) # Red Hat bash-2.05-8: OK (LSTOPTIONS="textarg") prepare() { local OPTIND while getopts ab got;do true done } prepare -a evalParams() { while getopts "p:" opt; do echo "opt=$opt OPTARG=$OPTARG" case $opt in p ) echo NOT_EXECUTED_LINE; LSTOPTIONS="$OPTARG" ;; \? ) echo INVALID ; exit 1 ;; esac done } LSTOPTIONS="" evalParams '-p textarg' echo "LSTOPTIONS=$LSTOPTIONS" test -z "$LSTOPTIONS" && echo BUG test -n "$LSTOPTIONS" && echo OK