arrays – Bash参数扩展和数组索引操作
${parameter,pattern}参数扩展将参数中的字母字符转换为小写字母.
关于cygwin 1.7.11-1 Bash 4.1.10(4)以及我的debian挤压Bash 4.1.5(1); $declare -a a=(Zero One Two Three); n=0; echo "${a[n],}->${n}"; echo "${a[++n]}->${n}"; echo "${a[++n],}->${n}" zero->0 One->1 three->3 $ 注意:类似的结果发生: 但是,长度扩展${#parame}可以正常工作: 我想,参数扩展发生了两次.但为什么会这样呢? 解决方法
我抓住了最新的bash源码&似乎此版本已解决此问题:
$./bash --version GNU bash,version 4.2.24(1)-release (x86_64-unknown-linux-gnu) Copyright (C) 2011 Free Software Foundation,Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> $ 但请注意,在我的Debian Squeeze稳定版上,我有: $apt-cache policy bash bash: Installed: 4.1-3 Candidate: 4.1-3 Version table: *** 4.1-3 0 500 http://ftp.uk.debian.org/debian/ squeeze/main amd64 Packages 100 /var/lib/dpkg/status $ $bash --version GNU bash,version 4.1.5(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2009 Free Software Foundation,Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 我认为这意味着目前在Debian Squeeze上,bash的最新稳定版本是4.1.5(1)&包含这个bug.同样在Cygwin 1.7.11-1上,目前最新的bash软件包似乎是版本4.1.10(4)&包含这个bug.当然这个问题很容易解决,所以不需要构建4.2源代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |