Hi Rony, Rajeev,

On Thu, Feb 28, 2013 at 12:01 AM, Rajeev R. K. <[email protected]> wrote:
>
> On 27 February 2013 23:40, [email protected] <[email protected]> 
> wrote:
> >
> > Thanks Rajeev and Binand for your tips. I noticed a '-a' option in the if 
> > statement so will this below work?
> >
> > If [grep -q "/home" mtab -a grep -q "/backup" mtab ] then.........
> >
>
> Doubtful, since the square brackets are little more than a shorthand
> for encapsulating the conditional and comparative expression syntax of
> the test command(check man test), and in this case, test would not
> know how to evaluate the expressions. In any case, my earlier point
> about having independent tests still stands from a usability
> standpoint.
>

You can omit the square brackets and use "-a" as:
if grep -q /home /etc/mtab -a grep -q /backup /etc/mtab ; then ...

Furthermore, to avoid invalid matches such as "/home1" or
"/export/home", you can use the "-w" option, if your version of grep
supports it (GNU grep does).

However, I wouldn't recommend:
if [ $( grep -cwE '/(home|backup)' /etc/mtab ) = 2 ]; then ...
as some versions of Linux allow a file system to be mounted multiple
times. So, we would get a false positive if /home is mounted twice,
but /backup is not.

A method that's both concise and readable is:
home_mounted=`grep -w /home /etc/mtab`
backup_mounted=`grep -w /backup /etc/mtab`
if [ "$home_mounted" -a "$backup_mounted" ] ; then ...

Regards,
Osric Xavier Fernandes

PS: Great to have the mailing list back. Good job team!
-- 
http://mm.ilug-bom.org.in/mailman/listinfo/linuxers

Reply via email to