加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

数组 – 为什么读取-a在zsh中失败

发布时间:2020-12-14 01:02:30 所属栏目:Linux 来源:网络整理
导读:如果我输入: echo "1 thedquote 2 quickdquote 3 brown" | while read -a D; do echo "${D[1]}--${D[0]}"; done 在bash中它说: the--1quick--2brown--3 但在zsh中它说: zsh: bad option: -a 为什么?我该怎么做呢? 解决方法 在两个shell中,read是内置的.
如果我输入:

echo "1 the
dquote> 2 quick
dquote> 3 brown" | while read -a D; do echo "${D[1]}--${D[0]}"; done

在bash中它说:

the--1
quick--2
brown--3

但在zsh中它说:

zsh: bad option: -a

为什么?我该怎么做呢?

解决方法

在两个shell中,read是内置的.它有相同的目的,但实现和选项不同.

为了读入zsh中的数组,read需要选项-A(而不是-a):

echo "1 the
2 quick   
3 brown" | while read -A D; do echo $D[2]--$D[1]; done

注意:zsh和bash之间还有很多不同之处:

>在zsh数组中默认编号为1,在bash中它们从零开始.
> echo $ARRAY打印输出zsh中的所有元素,但只输出bash中的第一个元素
>要在sh中打印数组的第三个元素,可以使用echo $ARRAY [3].在bash中需要使用大括号来分隔下标,第三个元素的下标也是2:echo ${ARRAY [2]}.
>在zsh中,您通常不需要引用参数扩展来正确处理带有空格的值.例如

FILENAME="no such file"
cat $FILENAME

将在zsh中只打印一条错误消息:

cat: 'no such file': No such file or directory

但bash中有三条错误消息:

cat: no: No such file or directory
cat: such: No such file or directory
cat: file: No such file or directory

>在zsh中,内置echo默认情况下会计算转义码.在bash中你需要传递-e参数.

echo 'footbar'

zsh的:

foo     bar

庆典:

footbar

> ……

一般来说,重要的是要记住,虽然zsh和bash类似,但它们远非相同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读