Charlie Bennett wrote: > Hmmmm. I sat on that blasted committee. :-)
> I'll file a corrigendum or whatever it's called. This should at > least be called out in the rationale. > > No biggie. I'll just make sure I quote all of my args. Yes, because test and [ were external commands when the API solidified they must continue to behave the same even though they are built-in now or they would break legacy scripts. So quoting is the way to go. if [ -f $filename ]; then # possible arg problems here If [ is an external command and $filename is not set then it would not appear to the external test command. Of course it is internal now but must still behave the same. For robustness that should be: if [ -f "$filename" ]; then As an alternative, you could use the [[ ... ]] syntax. That is the newer syntax, covered in POSIX too so should be portable to POSIX systems, but is always a built-in to the shell. This avoids need to quote the variables. This is okay even if $filename is not set. if [[ -f $filename ]]; then Because it is a built-in the $filename won't be expanded to a null argument. However it is not portable to systems with a /bin/sh that is a Bourne shell since the Bourne shell does not support that syntax. I still use the [ ... ] form with quoting mostly for that reason. But [[ ... ]] does have its attractions and advocates. I am even starting to use it casually now. :-) Bob _______________________________________________ Bug-bash mailing list Bug-bash@gnu.org http://lists.gnu.org/mailman/listinfo/bug-bash