I think the problem is this: The command:
[ -n A_String_of_Some_Sort ] is not a valid command.

I am an amateur, so not too slick, but I would do this:

a=`mount | grep etc...`
[ -n "$a" ] && {
      PREMOUNTED=yes
      echo Already mounted
               }
      
[ -z "$a" ] && {
              mount the thing
              other commands here
               }
This has the advantage of simplicity, always a important concern with me.

Joel

On Wed, Jan 23, 2002 at 01:55:48PM -0600, JW wrote:
> Hello,
> 
> I'm trying to write a bash script for a back up job. Unfortunately I'm not getting 
>anywhere.
> 
> 
> >I need to mount a file system only if the filesystem is 
> >_not_ already mounted.
> >
> >I'm thinking of it like this:
> 
> Ok, I've been reading documentation and wrote a test script. I've so far managed to 
>make it like this:
> 
> #!/bin/bash
> 
> 
> if [ -n `mount |grep "/mnt/root/cschomeserver/e"` ] #if it's already mounted don't 
>mount it
>     then PREMOUNTED='YES' && echo "is mounted" #If it's already mounted set a var
>     else echo "mount /mnt/root/cschomeserver/e is not mounted" #if it's not mounted, 
>mount it.
> fi
> echo $PREMOUNTED
> 
> 
> Unfortunately it seems that -n is exactly the opposite of what I need because the 
>output is backwards. Additionally, it was working backwards but without error a 
>minute ago and now it's giving that "too many arguments" thing - I'm not sure what's 
>changed, I tried undoing my (very small) edits to the file and it's still erroring 
>even after the un-do so I'm not sure what happened.
> 
> When it really is mounted I get the following output from that script:
> 
> fluorite:~ # ./test.sh
> ./test.sh: [: too many arguments
> mount /mnt/root/cschomeserver/e is not mounted
> 
> Which is backwards - it is mounted. As you can see PREMOUNTED doesn't get set either 
>- again, that's backwards.
> 
> Then when it really isn't mounted the script _does_  set the var:
> 
> fluorite:~ # umount /mnt/root/cschomeserver/e/
> fluorite:~ # ./test.sh
> YES
> 
> So, can someone tell me what the opposite of -n is? According to the man page it's 
>-z but that's acting the same as -n (weird) I can't figure it out. I've tried  -n, -z 
>and a host of other options I see in the man page and none of it's working and it's 
>backwards both ways.
> 
> Also can anyone explain the "too many arguments" part - are you not allowed to run a 
>command inside [] for output?
> 
> I'm also testing it with the interactive shell, such as the following variation:
> 
> fluorite:~ # if test -n $( `mount |grep "/mnt/root/cschomeserver/e"` ) ;  then 
>PREMOUNTED="YES" && echo $PREMOUNTED ; else echo "no" ; fi
> YES
> 
> Unfortunately this (and test -z) is always returning "YES" so something's still 
>quite wrong.
> 
> Obviously I do not understand how to properly get a yes/no value out of the string 
>returned from a nested command. If someone could explain even that much I'd 
>appreciate it.
> 
> TIA
> 
> 
> ----------------------------------------------------
> Jonathan Wilson
> System Administrator
> 
> Cedar Creek Software     http://www.cedarcreeksoftware.com
> Central Texas IT     http://www.centraltexasit.com
> 
> _______________________________________________
> Linux-users mailing list - http://linux.nf/mailman/listinfo/linux-users
> Subscribe/Unsubscribe info, Archives,and Digests are located at the above URL.
_______________________________________________
Linux-users mailing list - http://linux.nf/mailman/listinfo/linux-users
Subscribe/Unsubscribe info, Archives,and Digests are located at the above URL.

Reply via email to