Add to text file from command line via echo... possible to add to a particular line?[Scanned]

Mikkel L. Ellertson mikkel at infinity-ltd.com
Thu Jun 29 16:46:44 UTC 2006


Chris Bradford wrote:
> Paul Howarth wrote:
>> On Thu, 2006-06-29 at 16:07 +0100, Chris Bradford wrote:
>>  
>>> Paul Howarth wrote:
>>>    
>>>> On Thu, 2006-06-29 at 07:42 +0100, Chris Bradford wrote:
>>>>        
>>>>> Hi guys,
>>>>>
>>>>> I'm making a setup script for my Linux boxes that re-install
>>>>> Openldap and some other bits and bobs. I need to add some text to
>>>>> /etc/pam.d/gdm for example, and it needs to be on a particular line
>>>>> in this file, not at the bottom.
>>>>>
>>>>> For example using the command:
>>>>>
>>>>> echo 'session   required   pam_mkhomedir.so skel=/etc/skel
>>>>> umask=0077'  >> /etc/pam.d/gdm
>>>>>
>>>>> Will only add this to the bottom of the file, can I get around
>>>>> this, it needs to be on the same position on all machines, ie line 8.
>>>>>             
>>>> How about:
>>>>
>>>> awk '    NR == 8 {
>>>>         printf "session    required     pam_mkhomedir.so skel=/etc/skel
>>>> umask=007\n"
>>>>     }
>>>>     { print }' /etc/pam.d/gdm > /etc/pam.d/gdm.new
>>>> mv /etc/pam.d/gdm.new /etc/pam.d/gdm
>>>>
>>>> Paul.
>>>>
>>>>         
>>> Paul,
>>>
>>> Thats got it thanks :) I don't suppose there is a simple way to put a
>>> yes/no question into the script, if answered yes another script will
>>> be called, if no then its not?
>>>     
>>
>> There are some examples of reading user input here:
>>
>> http://www.hccfl.edu/pollock/AUnix1/fancyio.htm
>>
>> Paul.
>>
>>   
> Any ideas as to why this:
> 
> echo -n "Would you like to configure SophosAV: (type yes/no) "
> read ANSWER
> 
> if [ $ANSWER = yes -o YES ]
> then
>    echo 'good'
>    echo 'Enter script to run here....'
> 
> else
>    echo 'bad'
>    echo 'Carry on to next part of current script...'
> fi
> 
> Does not work?
> 
> Thanks,
> 
> -Chris
> 
> 
> This message has been scanned for viruses by BlackSpider MailControl -
> www.blackspider.com
> 
Change the if statement to
if [ $ANSWER = yes -o $ANSWER = YES ]

The way you have it is testing if $ANSWER = yes is true or if YES is
true, not if $ANSWER = yes or $ANSWER = YES is true.

Mikkel
-- 

  Do not meddle in the affairs of dragons,
for thou art crunchy and taste good with Ketchup!




More information about the fedora-list mailing list