Need /bin/sh script help

gs_stoller at juno.com gs_stoller at juno.com
Tue Apr 11 20:16:08 UTC 2006


On  Mon, 10 Apr 2006 22:30:32 -0700  Garrett Cooper wrote (my brief response follows all of his text):

    Just making a series of sh scripts to help automate updating and 
whatnot of my fileserver (since I am trying to avoid having mistakes 
occur with my system, and maybe help the community out a bit by 
providing some decent means of updating their own machines), and I was 
wondering if anyone could help me out with the following script I've 
developing (the grep if statements are incorrect..):

#!/bin/sh
#

KC="";

cd /usr/src;

if [ -n `grep -e s/KERNCONF=/ /etc/make.conf` ] # want to look for 
KERNCONF in /etc/make.conf
then
        echo "enter in the kernel conf file full pathname:";
        read KERNCONF;
        KC="KERNCONF=$KERNCONF";
fi

if [ -n `grep -e s/NO_CLEAN=*yes*/ /etc/make.conf` ] // want to look for 
NO_CLEAN in /etc/make.conf -- is this really necessary?
then
        cd sys;
        echo "cleaning sources"
        make clean;
        make cleandir;
        cd ..;
fi

echo "building kernel";
make buildkernel $KC;

echo "installing kernel";
make installkernel $KC;

echo "kernel compile complete. reboot to try new kernel";

TIA,
-Garrett

I see a problem in the line
if [ -n `grep -e s/KERNCONF=/ /etc/make.conf` ] # want to look for 
you should have double-quotes around the  `grep  ...  conf`
because it is likely to produce more than one token and so the
 [ -n  ... ]  statement violates the syntax (there should be exactly 1 token between the  -n  and the  ] , even no token there is an error, the way that is handled is to quote it.
I am writing this quickly without bringing up my  FreeBSD  system to check it.  Good luck.

Another thing you can do to avoid quoting (and the long strings that may result) is use the  -c  option of  grep  and check the number resulting.



More information about the freebsd-questions mailing list