0
は私がdash
とbash
でinsourcedされることを意味し、シェルスクリプトで解析するいくつかのオプションをした、と私はbash
にいくつかの奇妙な結果を得たので、私は、スクリプトの本質を置く:非常に異なるgetoptsは結果
./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'
と異なる(local
-supporting)シェルでこれを実行しました:
for sh in bash dash posh zsh; do echo SH=$sh; $sh ./getopts; done
私が得た結果は:
SH=bash
'1' '' ''
SH=dash
'1' '1' '1'
SH=posh
'1' '' '1'
SH=zsh
'1' '1' '1'
これらの不一致の理由は何ですか?問題はbash
とposh
またはスクリプトですか?
ありがとうございました。 SOが私を許可するときに受け入れます。 – PSkocik