分页: 1 / 1
求教一个繁琐的shell语句
发表于 : 2012-08-10 14:05
由 tiantang46800
# determine whether arrays are zero-based (bash) or one-based (zsh)
_xarray=(a b c)
if [ -z "${_xarray[${#_xarray[@]}]}" ]
then
_arrayoffset=1
else
_arrayoffset=0
fi
unset _xarray
上面的一段话的判断语句 if [ -z "${_xarray[${#_xarray[@]}]}" ] 如何一步一步理解。

Re: 求教一个繁琐的shell语句
发表于 : 2012-08-10 14:10
由 枫叶饭团
${_xarray[${#_xarray[@]}]}把它从最里面开始拆就行了,最里面的意思就是数组中的元素的个数,然后总的就是取最后一个吧
Re: 求教一个繁琐的shell语句
发表于 : 2012-08-10 14:57
由 eexpress
数组元素个数:
${#array[@]}
这里是3
然后
${_xarray[3]}
看有效没。本来应该是c。
这谁写的。还不如直接
● echo $SHELL
Re: 求教一个繁琐的shell语句
发表于 : 2012-08-10 15:17
由 lilydjwg
eexpress 写了:数组元素个数:
${#array[@]}
这里是3
然后
${_xarray[3]}
看有效没。本来应该是c。
这谁写的。还不如直接
● echo $SHELL
可是,如果是 zsh 的话,它两者都支持啊。
Re: 求教一个繁琐的shell语句
发表于 : 2012-08-11 0:05
由 naturalaw
Re: 求教一个繁琐的shell语句
发表于 : 2012-08-27 14:34
由 tusooa
tiantang46800 写了:# determine whether arrays are zero-based (bash) or one-based (zsh)
_xarray=(a b c)
if [ -z "${_xarray[${#_xarray[@]}]}" ]
then
_arrayoffset=1
else
_arrayoffset=0
fi
unset _xarray
上面的一段话的判断语句 if [ -z "${_xarray[${#_xarray[@]}]}" ] 如何一步一步理解。

${#_xarray[@]}:返回_xarray里边有多少个元素。
${_xarray[N]}:返回_xarray里第N个元素。一般序号从0开始。
这个判定是问_xarray到底是从0开始,还是从1开始的。
本质是看${_xarray[${#_xarray[@]}]}有没有内容。
在标准bash下,一般解析是这样的。
[ -z "${_xarray[${#_xarray[@]}]}" ]
=> [ -z "${_xarray[3]}" ]
=> [ -z "" ] # ${_xarray[3]}没有内容
=> 返回0
Re: 求教一个繁琐的shell语句
发表于 : 2012-08-27 14:40
由 eexpress
tusooa, 学鸟叫。。。我掐你的屁屁。nnnnd
Re: 求教一个繁琐的shell语句
发表于 : 2012-08-27 14:43
由 tusooa
eexpress 写了:tusooa, 学鸟叫。。。我掐你的屁屁。nnnnd
这是liu滔说的。