Shell 案例陈述中的意外行为

Shell 案例陈述中的意外行为,shell,switch-statement,ksh,Shell,Switch Statement,Ksh,我遇到了一些我不理解的案例陈述行为 case [1] in *1*)echo 50;;*)echo 58;;esac case $b[1] in *1*)echo 50;;*)echo 58;;esac echo [1] | hexdump -C -- echo $b[1] | hexdump -C -- 输出: 50 58 00000000 5b 31 5d 0a |[1].| 00000004 00000000

我遇到了一些我不理解的案例陈述行为

case [1] in *1*)echo 50;;*)echo 58;;esac
case $b[1] in *1*)echo 50;;*)echo 58;;esac
echo [1] | hexdump -C --
echo $b[1] | hexdump -C --
输出:

50
58
00000000  5b 31 5d 0a                                       |[1].|
00000004
00000000  5b 31 5d 0a                                       |[1].|
00000004

b是一个尚未设置的变量。我想知道为什么这些case语句会产生不同的结果,尽管这些命令在传递给echo时具有相同的hexdump。

这在我看来像是一个ksh错误。@whjm不一定是一件坏事。我们用它来区分bash和ksh。这在我看来像是一个ksh错误。@whjm不一定是坏事。我们用它来区分bash和ksh。