bash - 数组
bash中简单函数数组传递
1 | |
书中使用命令展开进行传值
1 | |
经过试验,这种方式也可以:
1 | |
从输出来看一致,不过内在是否存在区别?
我自己来解答:
newarray="$@": newarray不是数组;newarray=("$@"): newarray是数组(套了圆括号)newarray=("$*"): newarray不是数组
对于第3点可以回顾一下$@与$*的区别。$@中每个元素是独立的,$*只有一个元素。另外无论newarray是否为数组,${newarray[*]}都可以完整输出内容,因为当newarray不是数组的情况下,全部内容都在${newarray[0]}中,从标准输出来看没区别。
对于for而言数组与否没区别,它只会根据当前IFS分割元素。
再次回顾书中的方式:
1 | |
这种方式看似愚笨,实则非常鲁棒。通过命令展开将不确定的输入类型输出成普通字符串,再套括号变成数组,值得品味。
bash - 数组
http://xiaofami.github.io/2021/04/22/bash3/