【发布时间】:2016-05-24 23:33:34
【问题描述】:
根据this reference sheet on hyperpolyglot.org,可以使用以下语法来设置数组。
i=(1 2 3)
但是 dash 出现错误,这是 Ubuntu 上 /bin/sh 的默认设置,应该符合 POSIX。
# Trying the syntax with dash in my terminal
> dash -i
$ i=(1 2 3)
dash: 1: Syntax error: "(" unexpected
$ exit
# Working fine with bash
> bash -i
$ i=(1 2 3)
$ echo ${i[@]}
1 2 3
$ exit
参考表是否具有误导性或错误性?
如果是,那么定义数组或列表并符合 POSIX 的正确方法是什么?
【问题讨论】:
-
POSIX 中没有数组。如果你仔细观察,那是指一个literal。 hyperpolyglot.org 的整个部分只是
flat wrong(可能由 M$ 完成)。 -
我不明白在这种情况下表格的字面意思是什么,表格的部分称为
resizable arrays。但即使不是关于数组,它也应该根据参考表正确执行。但你说得对,重要的是没有数组的概念。 -
感谢您的澄清,我正在考虑依靠这张纸,然后我会寻找另一个。
-
哎呀,这是一个可怕的“参考”。它具有非 POSIX
function关键字,魔术$RANDOM和echo -n,推荐trap exit ERR而不是更有用的trap 'exit 1' ERR,并且非常鲁莽地引用。不推荐。
标签: arrays bash posix dash-shell