From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16778 invoked by alias); 3 Nov 2015 06:53: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: 20886 Received: (qmail 18282 invoked from network); 3 Nov 2015 06:53:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, FREEMAIL_REPLY,HTML_MESSAGE,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to:content-type; bh=mMuPPvY6aXu2BasTVuLz3rXyVXrmfuX1cJqhtXZYbAk=; b=nj0o1G627tfVIr4rg88H0trXDjAYBep4dMXAReD7UBcZcPx0IBUrbWPjSFvVPM8BxP 4geGNfD6b94nULi3tUaSK4yDaPqsPem7hbFtgff18D9GF7akDXJLWjU/dcCB7HyS6X2U 6yTbys6P6xtSnwcyUL1paBf3pOoCERzfk1rnWGPcfW0JjzbdpckZvPLVJEaV8jH+7kjv ZFY9igqN/z11u2kBCmBuQQibu/JsPB+Af1yBLSZ3CoFuMKrzBduTv1bvr7jcpmq2AnHf iwdJLhwwTiYvLVZr0lXty2kJZtk0T0/qHnSr4wDPffRVPiKfmFf+y2fTCHeN5QoSCkLF Y8dw== X-Received: by 10.182.33.67 with SMTP id p3mr16732615obi.11.1446533590847; Mon, 02 Nov 2015 22:53:10 -0800 (PST) MIME-Version: 1.0 Sender: a.skwar@gmail.com From: Alexander Skwar Date: Tue, 3 Nov 2015 07:52:51 +0100 X-Google-Sender-Auth: 4i3nUlChGVeXrtoOpWjMbgMJfj8 Message-ID: Subject: for loop with parameter expansion in zsh vs. bash To: zsh-users@zsh.org Content-Type: multipart/alternative; boundary=001a11c1e8d0d695ba05239d582e --001a11c1e8d0d695ba05239d582e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello I've got a variable, where seperate values are limited with a delimiter. Let's say PATH with : (but the question is general). With bash, I can easily create a for loop which loops over all the elements, when I have bash replace the ":" with a " ", like so: ${PATH//:/ }. a@ubuntu-notebook:~$ echo $PATH /home/a/Applications/go/bin:/home/a/bin:/opt/bin:/opt/sbin:/usr/local/sbin:= /usr/local/bin:/home/a/Applications/copy/x86_64:/usr/sbin:/usr/bin:/sbin:/b= in:/usr/games:/usr/local/games:/home/a/Applications/adt-bundle-linux-x86_64= /sdk/platform-tools:/home/a/Applications/btsync:/home/a/.rvm/bin a@ubuntu-notebook:~$ for e in ${PATH//:/ }; do echo e: $e; done e: /home/a/Applications/go/bin e: /home/a/bin e: /opt/bin e: /opt/sbin e: /usr/local/sbin e: /usr/local/bin e: /home/a/Applications/copy/x86_64 e: /usr/sbin e: /usr/bin e: /sbin e: /bin e: /usr/games e: /usr/local/games e: /home/a/Applications/adt-bundle-linux-x86_64/sdk/platform-tools e: /home/a/Applications/btsync e: /home/a/.rvm/bin In zsh, the same for loop does not work (like it does in bash): 7:51% for e in ${PATH//:/ }; do echo e: $e; done e: /home/a/Applications/go/bin /home/a/bin /opt/bin /opt/sbin /usr/local/sbin /usr/local/bin /home/a/Applications/copy/x86_64 /usr/sbin /usr/bin /sbin /bin /usr/games /usr/local/games /home/a/Applications/adt-bundle-linux-x86_64/sdk/platform-tools /home/a/Applications/btsync As you can see there, zsh had only 1 iteration of the for loop. What would be the zsh way to loop over elements, which are delimited by a ":" (or "," or ";" or whatever)? Thanks a lot, Alexander --=20 =3D> *Google+* =3D> http://plus.skwar.me <=3D=3D =3D> *Chat* (Jabber/Google Talk) =3D> a.skwar@gmail.com <=3D=3D --001a11c1e8d0d695ba05239d582e--