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