On 2/15/11 2:13 AM, Ferenc Wagner wrote:
Peter Wagner<[email protected]>  writes:

-       [ -n "$leasefile" ]&&  [ -e "$leasefile" ] || touch "$leasefile"
+       [ -n "$leasefile" ]&&  ( [ -e "$leasefile" ] || touch "$leasefile" )
Looks like this is fixed already by commit 15fba44a (but see point 6 of
http://mywiki.wooledge.org/BashPitfalls and the rest for an interesting
read) so the following is academic, but I typed it before checking...

It's cheeper to use braces in such cases to avoid subshell creation:

           [ -n "$leasefile" ]&&  { [ -e "$leasefile" ] || touch "$leasefile"; }

Btw. is the -e test really necessary?  Why not simply

           [ -n "$leasefile" ]&&  touch "$leasefile"
?

Well, to use your own point... why create an extra process to "touch" a file 
that already exists?

And if it does exist, do you necessarily want to modify the timestamp on it?

I don't like using "-e" because what happens if the name exists, but it's a 
directory or a socket or a block file...

Why not use "-f" instead?

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to