> I forgot, then remembered this old trick from the Rc paper, by Tom Duff [1]: > [1]: http://doc.cat-v.org/plan_9/4th_edition/papers/rc
Thanks to this doc, i know who/why i have to blame for my love/hate relationship with rc: i read the code of werc something like a decade ago and really love most of the syntax but i never used it because of its lack of parameter expansion [1]. i though it was an extremist version of the plan9 simplicity: rc run commands, sed and awk edit text. period! on a theorical side, i really subscribe but i feel inconfortable with the consequences: but as a result, lot of subshells are executed to do the job done. so because of rc not having parameter expansion, we have to replace target=${source%md}.html by target=`{ echo $source | sed 's/md$/html/' } rc started a subshell, then a sed that have to parse and execcute its script for *one* line. maybe i worry too much (or for no good reason) about performances but this made me run away. but i read from Tom Duff in the document: Most of the other differences between rc and the Bourne shell are not so serious. I eliminated Bourne’s peculiar forms of variable substitution, like echo ${a=b} ${c-d} ${e?error} because they are little used, redundant and easily expressed in less abstruse terms. He made a point saying that they are little used (not enough for me) but to me, a good practice is to use them with the combination of set -u. it makes the errors much easier to spot. the third assertion, however, isn't backed up by exemple and i still don't know how to convert ${c-d} ${e?error} in "easily expressed in less abstruse terms" the best i have is if (~ $c () ) c=d if (~ $e () ) { >[2=1] echo error ; exit 1 } who's abstruse now ? i hope i missed something again. also: he didn't mention the very useful other parameter expansions so maybe those things ${file%.md} ${file##*/} didn't exist when he wrote rc so maybe the reason rc didn't have parameter expansions is historical. regards marc 1: As i already mention: zsh took a lot from rc but rc also inspired a shell named `es`: the only one i know with the ability to deal with anonymous fonctions.