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/