No Syntax Error and No Output


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting No Syntax Error and No Output
# 8  
Old 05-20-2010
so i tried using the code below to modify my script, but i got the same thing, no syntax and no output, i think the mistake is in the way i try to write to the logfile

Quote:
Originally Posted by anchal_khare
Code:
while read line
do
 echo $line # do whatever with each line
done < ./temp

here is my attempt

Code:
        who > temp
        
        touch tmplog    
        touch logfile

        while read line
        do
            usertemp=$(echo $line | cut -d" " -f1)
            nametemp=$(grep $usertemp /etc/passwd | cut -d: -f5)
            datetemp=$(echo $line | cut -d" " -f13)
            adrstemp=$(echo $line | cut -d" " -f14)
        
            if [ "$usertemp" != "$user" ]
            then 
                echo -n $nametemp >> tmplog
                echo -n " " >> tmplog
                echo -n $datetemp >> tmplog
                echo -n " " >> tmplog
                echo -n $adrstemp >> tmplog
                echo "" >> tmplog
            fi             
        done < ./temp
        
        sort -db tmplog -o logfile
        rm temp
        rm tmplog

# 9  
Old 05-20-2010
Hi.

As Franklin asked, can you post some of ./temp?

My "who" command outputs four fields, but you're using 14:

Code:
            datetemp=$(echo $line | cut -d" " -f13)
            adrstemp=$(echo $line | cut -d" " -f14)

# 10  
Old 05-20-2010
my "who" command outputs 5 fields:
- username
- terminal
- date
- time
- ip

i think (cut -d" ") deals with each space " " as a separate field, so that's why i end up using 13, 14. I'm sure someone mentioned that in a reply to one of my posts

here is an output from my ./temp file, which is exactly the same as my "who" output

Image
# 11  
Old 05-20-2010
Of course, I overlooked that.

Despite the fact I said it earlier
Quote:
The reason is that -d takes every occurrence to be a field separator.
Smilie

But it's probably not a science.

Code:
who > temp
user=$(whoami | cut -d" " -f1 )
rm tmplog

while read _user _term _date _time _ip _junk
do
  nametemp=$(grep $_user /etc/passwd | cut -d: -f5)

  if [ "$user" != "$_user" ]
  then
    printf "$nametemp " >> tmplog
    printf "$_date " >> tmplog
    print $_ip>> tmplog
  fi
done < ./temp

sort -db tmplog -o logfile
rm temp
rm tmplog


Last edited by Scott; 05-20-2010 at 09:57 AM..
# 12  
Old 05-20-2010
haha, i was looking for the person who said it to quote him and for some reason i read all the previous replies except yours Smilie

can you please explain the code you wrote down,
- what are the variables after the "while read"?
- how does this code write the name, date and ip to the logfile?
# 13  
Old 05-20-2010
Quote:
Originally Posted by ibzee33
haha, i was looking for the person who said it to quote him and for some reason i read all the previous replies except yours Smilie

can you please explain the code you wrote down,
- what are the variables after the "while read"?
- how does this code write the name, date and ip to the logfile?
The variables represent the five output fields of your who command (_junk is just to pick everything else up should there be more fields).

I replaced your echo -n with printf because it's non-standard (actually, truthfully because it doesn't work on AIX, where I wrote this Smilie)

The rest is much the same as you had, except that the values are read without the need to cut up the line.

You could replace all of this:
Code:
    printf "$nametemp " >> tmplog
    printf "$_date " >> tmplog
    print $_ip>> tmplog

with just
Code:
    echo "$nametemp $_date $_ip" >> tmplog

# 14  
Old 05-21-2010
so i modified the code as u suggested and im still not getting any output, i tried looking over it, but i still don't understand how it works.

Code:
	who > temp
		user=$(whoami | cut -d" " -f1)

		touch tmplog
		while read _user _term _date _time _ip _junk
		do
			nametemp=$(grep $_user /etc/passwd | cut -d: -f5)
			
			if [ "$user" != "$_user" ]
			then
				printf "$nametemp " >> tmplog
				printf "$_date " >> tmplog
				printf $_ip >> tmplog
			fi
		done < ./temp

	sort -db tmplog -o logfile
	rm temp
	rm tmplog

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

IF section problem. syntax error: unexpected end of file error

Hello, I have another problem with my script. Please accept my apologies, but I am really nooby in sh scripts. I am writing it for first time. My script: returned=`tail -50 SapLogs.log | grep -i "Error"` echo $returned if ; then echo "There is no errors in the logs" fi And after... (10 Replies)
Discussion started by: jedzio
10 Replies

2. UNIX for Dummies Questions & Answers

Dot and redirected output syntax in a tar command

Hi All, Please could anyone advise what the purpose of the dot syntax in the following command means: tar -cvf ${WORKING_BACKUP_ROOT}/${TAR_ARCHIVE_FILE} . >/${BACKUP_ROOT}/${ARCHIVE_LOG} Many thanks (2 Replies)
Discussion started by: daveu7
2 Replies

3. Shell Programming and Scripting

awk syntax mistake doubles desired output

I am trying to add a line to a BASH shell script to print out a large variable length table on a web page. I am very new to this obviously, but I tried this with awk and it prints out every line twice. What I am doing wrong? echo "1^2^3%4^5^6%7^8^9%" | awk 'BEGIN { RS="%"; FS="^"; } {for (i =... (6 Replies)
Discussion started by: awknewb123
6 Replies

4. Shell Programming and Scripting

problem with print append to output file syntax

I'm trying to output the contents of the infile to the outfile using Append. I will want to use append but the syntax doesn't seem to be working ! Input file (called a.txt) contains this: a a a b b b I'm running shell script (called k.sh) from Unix command-line like this: ./k.sh .... (1 Reply)
Discussion started by: script_op2a
1 Replies

5. OS X (Apple)

Syntax for output filenames

Hello to everybody... I have spent very long time on this before I decided to sign up in this forum. Maybe I've just not used the right keywords. I have to say that I'm not a programmer or something like that... I've been playin' around a little with ImageMagick and I would like to have... (4 Replies)
Discussion started by: pixelanstalt
4 Replies

6. Shell Programming and Scripting

Script for a syntax output for a table.

Hello Unix Gurus, I need a few instuructions how to approach the following scenarios.For a given TABLENAME a script should display the following structure on the screen.The structure should be as below.for a given perticular table. SELECT *FROM TAB1 a JOIN TAB1 b ON ... (0 Replies)
Discussion started by: kanakaraju
0 Replies

7. Shell Programming and Scripting

Receiving error: ./ang.ksh[35]: 0403-057 Syntax error at line 116 : `done' is not expected.

Hi All I am quite new to Unix. Following is a shell script that i have written and getting the subject mentioned error. #!/bin/ksh #------------------------------------------------------------------------- # File: ang_stdnld.ksh # # Desc: UNIX shell script to extract Store information.... (3 Replies)
Discussion started by: amitsinha
3 Replies

8. AIX

nim mksysb error :/usr/bin/savevg[33]: 1016,07: syntax error

-------------------------------------------------------------------------------- Hello, help me please. I am trying to create a mksysb bakup using nim. I am geting this error, how to correct it ? : Command : failed stdout: yes stderr: no... (9 Replies)
Discussion started by: astjen
9 Replies

9. UNIX for Dummies Questions & Answers

awk Shell Script error : "Syntax Error : `Split' unexpected

hi there i write one awk script file in shell programing the code is related to dd/mm/yy to month, day year format but i get an error please can anybody help me out in this problem ?????? i give my code here including error awk ` # date-month -- convert mm/dd/yy to month day,... (2 Replies)
Discussion started by: Herry
2 Replies
Login or Register to Ask a Question