From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18105 invoked by alias); 22 Feb 2012 03:36:16 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 16778 Received: (qmail 4165 invoked from network); 22 Feb 2012 03:36:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,HTML_MESSAGE,LOTS_OF_MONEY,NML_ADSP_CUSTOM_MED, RCVD_IN_DNSWL_LOW,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.3.2 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 209.85.215.43 as permitted sender) Received-SPF: pass (google.com: domain of dlin.tw@gmail.com designates 10.152.115.38 as permitted sender) client-ip=10.152.115.38; Authentication-Results: mr.google.com; spf=pass (google.com: domain of dlin.tw@gmail.com designates 10.152.115.38 as permitted sender) smtp.mail=dlin.tw@gmail.com; dkim=pass header.i=dlin.tw@gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=NLqGeTwJgxZzMSc6XCWGkKo/9z6asGdiUi3Ek8gqBvg=; b=xX/dIrvWgaAxDm0gt4GAaFHUGS7YTwW5piRv8o248pzl0Tzb2YtF4BfVOLpvaW1DlI m6TmRSyildCg/FlXRcWvCHjcXydY52n+VqlKlHV8IXGyjb3ZdUZAA/tlnLYrNlRUyYoD wna1xnj3aOoA0Ey4ryJnmvowIsf0bvYmeIEGo= MIME-Version: 1.0 Date: Wed, 22 Feb 2012 03:28:48 +0000 Message-ID: Subject: let unset array element remove compatible with bash From: Daniel Lin To: zsh-users@zsh.org Content-Type: multipart/alternative; boundary=f46d040891eb34543104b985201f --f46d040891eb34543104b985201f Content-Type: text/plain; charset=UTF-8 As we know, bash is very common on Linux world. So, even I've moved to zsh. But, I wish my script could be compatible with bash. Today, I found the array element remove is not compatible with bash. Can any developer consider to enhance zsh's function like "unset var[2]"? Here is the sample $var[1]="four" ; var[2]="seven" ; var[3]="Four and Seven" $for v in "${var[@]}" ; do echo "$v" ; done four seven Four and Seven $for v in "${var[*]}" ; do echo "$v" ; done four seven Four and Seven $echo "${#var[@]} ${#var[1]} ${#var[2]} ${#var[3]}" # get lengh 3 4 5 14 $unset var[2] ###### BASH only delete one element $var[2]=() ###### ZSH only delete one element $echo "${#var[@]} ${#var[1]} ${#var[2]} ${#var[3]}" 2 4 0 14 Another note, I wish the FAQ in zsh can explain this incompatible with bash. $echo "${#var[@]} ${#var[1]} ${#var[2]} ${#var[3]}" # get lengh work both bash/zsh $echo "$#var $#var[1] $#var[2] $#var[3]" # get lengh work only zsh --f46d040891eb34543104b985201f--