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