分页: 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[@]}]}" ] 如何一步一步理解。 :em06

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
这谁写的。还不如直接
● echo $SHELL

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[@]}]}" ] 如何一步一步理解。 :em06
${#_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滔说的。