arrays - 为什么 zsh 中 read -a 失败

标签 arrays zsh

如果我输入:

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 prints 输出 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 'foo\tbar'
    

    zsh :

    foo     bar
    

    bash :

    foo\tbar
    

一般来说,重要的是要记住,而 zshbash相似,但远非相同。

关于arrays - 为什么 zsh 中 read -a 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453146/

相关文章:

php - 在 PHP 中对数组进行分组

将一个整数结构转换为一个整数数组

colors - zsh 中使用 256 色的语法高亮显示?

jquery - 如何获取表单内所有输入的ID?

javascript - 查找两个数组之间的共同最小值

javascript - 在Javascript中打印出子数组的元素

git - 使用 'vcs_info' 根据状态着色 git 分支名称

zsh - 当程序有子命令时完成

python - 为什么我每次打开新终端时都必须返回 "source vitrualenvwrapper.sh"?

ruby-on-rails - 使用 zsh 在 IntelliJ 中找不到环境变量