Zsh 与 bash 的答案完全不同
Zsh has totally different answer with bash
我正在使用 zsh shell 并设置了一个环境数组。
像这样:
➜ ~ a=(1 2 3 4)
➜ ~ echo $a[3]
3
➜ ~ bash
%n@%m:%~%# b=(1 2 3 4 5)
%n@%m:%~%# echo $b[3]
1[3]
%n@%m:%~%# echo ${b[3]}
4
%n@%m:%~%# exit
exit
➜ ~ echo ${a[3]}
3
➜ ~
五颜六色的标题是zsh,而另一个是bash,显然是相反的结果。我从一本关于 shell 的书中读到的内容就像 bash 的行为。那么 zsh 错了吗?如果我为 bash 编写脚本,它会在 zsh 环境中遇到问题吗?我是Linux的新人,谢谢解答
为了回答主要问题,通常,zsh
的脚本应与 bash
的脚本分开编写。 bash
和 zsh
都是他们自己,不应将其视为同一产品的两个版本。
您的示例中发生的情况有两个原因:
索引
zsh
索引数组从 1
到 n
bash
索引从 0
到 n-1
的数组
语法
zsh
使用 $array[index]
语法
bash
使用 ${array[index]}
语法,并将 $array
理解为对数组第一个元素的访问,因此如果后面跟着任何其他内容,则余数被视为文字(这就是 1[3]
的来源)
我正在使用 zsh shell 并设置了一个环境数组。 像这样:
➜ ~ a=(1 2 3 4)
➜ ~ echo $a[3]
3
➜ ~ bash
%n@%m:%~%# b=(1 2 3 4 5)
%n@%m:%~%# echo $b[3]
1[3]
%n@%m:%~%# echo ${b[3]}
4
%n@%m:%~%# exit
exit
➜ ~ echo ${a[3]}
3
➜ ~
五颜六色的标题是zsh,而另一个是bash,显然是相反的结果。我从一本关于 shell 的书中读到的内容就像 bash 的行为。那么 zsh 错了吗?如果我为 bash 编写脚本,它会在 zsh 环境中遇到问题吗?我是Linux的新人,谢谢解答
为了回答主要问题,通常,zsh
的脚本应与 bash
的脚本分开编写。 bash
和 zsh
都是他们自己,不应将其视为同一产品的两个版本。
您的示例中发生的情况有两个原因:
索引
zsh
索引数组从1
到n
bash
索引从0
到n-1
的数组
语法
zsh
使用$array[index]
语法bash
使用${array[index]}
语法,并将$array
理解为对数组第一个元素的访问,因此如果后面跟着任何其他内容,则余数被视为文字(这就是1[3]
的来源)