Since the default Shell on almost all Linux distributions is bash(1), this page lists some common bash-isms that might fail on other sh-type shells on other Unix/Unix-like OperatingSystems. If there is even the remote possibility that your script might be used by someone other than you, it's worth putting in a small bit of effort to use more portable constructs.
Note that test(1) is often a built-in function in some shells.
On bash, a non-existant variable is treated like "", but on some other shells it is treated like nothing.
(non-portable)
$ test -z $NON_EXISTENT_VARIABLE $ echo $? 0
(more portable)
$ test -z "$NON_EXISTENT_VARIABLE" $ echo $? 0
This seems to be a GNU extension... some shells don't allow -e as an option to test. In most cases, you can use "-r" (for file is readable) instead.
$ test -e filename test: argument expected
(non-portable)
$ export VAR1=foo $ echo $VAR1 foo
(more portable)
$ VAR2=bar; export VAR2 $ echo $VAR2 bar
Part of CategoryProgramming
No other page links to ShellPortabilityNotes yet.