ich eine Option in einem Shell-Skript Parsen tat bedeutete in dash
und bash
Insourcing werden, und ich habe einige seltsame Ergebnisse in bash
, so habe ich das Wesen des Skripts in:Sehr unterschiedliche getopts Ergebnisse mit verschiedenen Schalen
./getopts:
fn()
{
local verbose opt
while getopts "v" opt; do
case "$opt" in v) verbose=1;; ?) return 1;; esac
done; shift $((OPTIND - 1))
echo -n "'$verbose' "
}
fn -v; fn -v; fn -v; printf '\n'
und lief diese mit verschiedenen (local
-Unterstützung) Schalen:
for sh in bash dash posh zsh; do echo SH=$sh; $sh ./getopts; done
Die Ergebnisse Ich habe sind:
SH=bash
'1' '' ''
SH=dash
'1' '1' '1'
SH=posh
'1' '' '1'
SH=zsh
'1' '1' '1'
Was sind die Gründe für diese Diskrepanzen? Ist das Problem mit bash
und posh
oder mein Skript?
Danke. Wird akzeptieren, wenn SO mich lässt. – PSkocik