![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Hey, a command line community? That's a pretty neat thing to have.
So to introduce myself, here's something I figured out pretty recently. It's in one of those eyes-glazing-over parts of the shell man page (but I had a specific problem to solve so I had to figure it out). Behold! It is a piece of "parameter expansion" magic:
$ TEST='foo:bar' ; echo ${TEST%:*} ${TEST#*:}
foo bar
Ooh, exciting! No wait, it's not. But here's the problem I had: How can I loop over pairs of values in a script or one-liner?
The solution I came up with looked something like this:
$ for f in url1:filename1 url2:filename2 url3:filename3;
do URL=${f%:*}; FILENAME=${f#*:} ;
...
; done
...and so for each pair, URL and FILENAME gets set to their respective portion. (And you'll be glad to learn that I got my Youtube-mediated crime drama fix in the end.)