Linux Bourne BASH Shell One Liners
Jump to navigation
Jump to search
Sub Shells in BASH
() create subshell, vars dont remain, {} not sub shell but need spaces and ending semi colon e.g.
$(cat /proc/mounts | grep -q "/mnt/$i") && { mnt=1 ;umount /mnt/$i/; }
Gotchas
The dreaded double nested faux pax - if the second command in the && {...} fails, it will do the || {...}
Simple example ('lg' is just nonsense to cause an error)
rich@PORTEGER830:~$ echo "aaa" && { lg;echo ok; } || { echo fail;echo fail2; } aaa lg: command not found ok rich@PORTEGER830:~$ echo "aaa" && { echo ok;lg; } || { echo fail;echo fail2; } aaa ok lg: command not found fail fail2 rich@PORTEGER830:~$