0
我做了一些選項,意味着dash
和bash
被內包一個shell腳本解析,我在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
- 支持)彈跑這樣的:
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