首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

shell脚本的一个有关问题,if [ -z "${_xarray[${#xarray[@]}]}" ]

2012-09-21 
shell脚本的一个问题,if [ -z ${_xarray[${#_xarray[@]}]} ]# determine whether arrays are zero-based

shell脚本的一个问题,if [ -z "${_xarray[${#_xarray[@]}]}" ]
# 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=(a b c)
数组包括3个元素a,b,c。$[_xarray[0]]=a,$[_xarray[1]]=b,$[_xarray[2]]=c
${#_xarray[@]}求数组个数,结果为3
所以${_xarray[${#_xarray[@]}]}为${_xarray[3]}
由于数组第4个元素下标为3,不存在即空字符串所以
 if [ -z "${_xarray[${#_xarray[@]}]}" ]成立
 _arrayoffset=1

热点排行