The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
question about testing in shell programming(modifications were made) thungmail Shell Programming and Scripting 2 04-08-2008 12:51 PM
Shell Script to Load data into the database using a .csv file and .ctl file Csmani Shell Programming and Scripting 3 05-24-2006 05:09 AM
Reading file names from a file and executing the relative file from shell script anushilrai Shell Programming and Scripting 4 03-10-2006 02:25 AM
Tracing file modifications gupta_ca UNIX for Advanced & Expert Users 3 08-03-2005 05:50 AM
In Line File Modifications: Search and Replace Shakey21 Shell Programming and Scripting 2 11-20-2001 01:21 PM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1  
Old 03-24-2008
Registered User
 

Join Date: Mar 2008
Posts: 11
my shell script (file modifications)

hi guys

Need some help on my below script

#!/bin/sh
if [ -f /root/joy/inittab ]
then
echo "~~:S:wait:/sbin/sulogin" >> /root/joy/inittab
else
echo "/root/joy/inittab does not exist"
fi

now the problem is that when i run the above script it runs successfully
but when i run it repeatedly the word echo "~~:S:wait:/sbin/sulogin" gets added to the file irrespectively the no of times i run the script.
I jst want the line created jst once in the file irrespective of times i run the script.How do i do pls help and thanks in advance

reg:ash
Reply With Quote
Forum Sponsor
  #2  
Old 03-24-2008
in2nix4life's Avatar
Registered User
 

Join Date: Oct 2007
Location: East Coast
Posts: 46
Hope this helps:

#!/bin/bash

if [ -f /root/joy/inittab ]
then
# check to see if inittab already contains this line
grep "~~:S:wait:/sbin/sulogin" /root/joy/inittab >/dev/null

# check return code from grep 0 line was found 1 or higher it wasn't
errorcode=`echo $?`
if [ $errorcode -ne 0 ]
then
echo "~~:S:wait:/sbin/sulogin" >> /root/joy/inittab
fi
else
echo "inittab does not exist"
fi
Reply With Quote
  #3  
Old 03-24-2008
era era is offline
Herder of Useless Cats
 

Join Date: Mar 2008
Location: /there/is/only/bin/sh
Posts: 3,650
Just as a stylistic comment, "if" looks at the error code from whatever command you run it on; "if test $?" is a rather roundabout way of saying it.

Code:
#!/bin/bash

if [ -f /root/joy/inittab ]
then
  # check to see if inittab already contains this line
  if ! grep "~~:S:wait:/sbin/sulogin" /root/joy/inittab >/dev/null
  then
    echo "~~:S:wait:/sbin/sulogin" >> /root/joy/inittab
  fi
else
  echo "inittab does not exist"
fi
In theory, there is a race condition here; you should take care not to end up running many of these at the same time, or they will stumble over each other.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 02:55 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0