求教一个繁琐的shell语句

sh/bash/dash/ksh/zsh等Shell脚本
回复
tiantang46800
帖子: 5
注册时间: 2012-08-10 14:02

求教一个繁琐的shell语句

#1

帖子 tiantang46800 » 2012-08-10 14:05

# 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
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 求教一个繁琐的shell语句

#2

帖子 枫叶饭团 » 2012-08-10 14:10

${_xarray[${#_xarray[@]}]}把它从最里面开始拆就行了,最里面的意思就是数组中的元素的个数,然后总的就是取最后一个吧
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 求教一个繁琐的shell语句

#3

帖子 eexpress » 2012-08-10 14:57

数组元素个数:
${#array[@]}

这里是3

然后
${_xarray[3]}
看有效没。本来应该是c。

这谁写的。还不如直接
● echo $SHELL
● 鸣学
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求教一个繁琐的shell语句

#4

帖子 lilydjwg » 2012-08-10 15:17

eexpress 写了:数组元素个数:
${#array[@]}

这里是3

然后
${_xarray[3]}
看有效没。本来应该是c。

这谁写的。还不如直接
● echo $SHELL
可是,如果是 zsh 的话,它两者都支持啊。
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 求教一个繁琐的shell语句

#5

帖子 naturalaw » 2012-08-11 0:05

这谁写的。还不如直接
● echo $SHELL
  • The eternal law
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 求教一个繁琐的shell语句

#6

帖子 tusooa » 2012-08-27 14:34

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

代码: 全选

] ls -ld //
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 求教一个繁琐的shell语句

#7

帖子 eexpress » 2012-08-27 14:40

tusooa, 学鸟叫。。。我掐你的屁屁。nnnnd
● 鸣学
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 求教一个繁琐的shell语句

#8

帖子 tusooa » 2012-08-27 14:43

eexpress 写了:tusooa, 学鸟叫。。。我掐你的屁屁。nnnnd
这是liu滔说的。

代码: 全选

] ls -ld //
回复