On 12/2/19 9:56 AM, Greg Wooledge wrote: > On Mon, Dec 02, 2019 at 09:51:12PM +0700, pepa65 wrote: >> On 12/2/19 9:38 PM, Andreas Kusalananda Kähäri wrote:> for dirpath do >>> command mkdir -p "$dirpath" || return >>> done >> It is very sad that the 'do' is not optional (non-backwards compatibility >> breaking feature request!), and it has to be the start of the next >> commandline (after ';' or the start of a new line), so: >> >> for dirpath >> do command mkdir -p "$dirpath" || return >> done > > You're mistaken. > > wooledg:~$ set -- a b c > wooledg:~$ for i do echo "$i"; done > a > b > c
Interesting, I didn't expect that to work. It doesn't work if you use 'in', which I normally do. $ for i in "$@" do echo "$i"; done bash: syntax error near unexpected token `done' I guess that makes sense -- the 'in' will try to treat the words "do" "echo" "$i" as iteration elements, but without 'in', there can only be one argument to 'for', so bash can safely parse 'do' without the ; separator. But I think I'll still use them despite being not strictly needed, or I'll just confuse myself once I do need them. :p I've used them for too long by now, anyway. -- Eli Schwartz Arch Linux Bug Wrangler and Trusted User
signature.asc
Description: OpenPGP digital signature