Incrementing in while loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Incrementing in while loop
# 1  
Old 06-09-2009
Incrementing in while loop

Code:
echo "Enter Starting id:"
  echo ""
  read rvst_strt_idxx
  echo ""
  echo "Enter Closing id:"
  echo ""
  read rvst_clsn_idxx  

FIELD1=$rvst_strt_idxx
FIELD2="USER" 
FIELD3="TEST"
FIELD4="12345"
FIELD5="00000"

  echo ""
  echo "INSERT INTO TABLE( FIELD1, FIELD2, FIELD3, FIELD4,
  FIELD5 ) "
  echo " VALUES ( '$FIELD1','$FIELD2','$FIELD3','$FIELD4',$FIELD5') "

Suppose Starting id is 10 and closing Id is 20
I want to write a script which will increment the value of field1 in each loop starting with 10 and increment until 20 is reached

ie I need 20 lines of Insert into scripts which will have field1 values from 10 to 20

I think i need to write a while loop which increments the value of field 1 by 1 and until it reaches the upper limit is (20 here).

Please help

Last edited by vidyadhar85; 06-10-2009 at 02:58 PM.. Reason: code tag added
# 2  
Old 06-09-2009
Code:
echo "Enter Starting id:"
echo ""                  
read rvst_strt_idxx      
echo ""                  
echo "Enter Closing id:" 
echo ""                  
read rvst_clsn_idxx      

while [[ $rvst_strt_idxx -le $rvst_clsn_idxx  ]]
do

	FIELD1=$rvst_strt_idxx
	FIELD2="USER" 
	FIELD3="TEST"
	FIELD4="12345"
	FIELD5="00000"
	
	echo ""
	echo "INSERT INTO TABLE( FIELD1, FIELD2, FIELD3, FIELD4, FIELD5 ) "
	printf "VALUES ( '%s', '%s', '%s', '%s', '%s' );\n" $FIELD1 $FIELD2 $FIELD3 $FIELD4 $FIELD5
    rvst_strt_idxx=$(( $rvst_strt_idxx  + 1 ))
done > output.sql

try something like this.
# 3  
Old 06-09-2009
Quote:
Originally Posted by ultimatix
echo "Enter Starting id:"
echo ""
read rvst_strt_idxx
echo ""
echo "Enter Closing id:"
echo ""
read rvst_clsn_idxx

FIELD1=$rvst_strt_idxx
FIELD2="USER"
FIELD3="TEST"
FIELD4="12345"
FIELD5="00000"

echo ""
echo "INSERT INTO TABLE( FIELD1, FIELD2, FIELD3, FIELD4, FIELD5 ) "
echo " VALUES ( '$FIELD1','$FIELD2','$FIELD3','$FIELD4',$FIELD5') "


Suppose Starting id is 10 and closing Id is 20
I want to write a script which will increment the value of field1 in each loop starting with 10 and increment until 20 is reached

ie I need 20 lines of Insert into scripts which will have field1 values from 10 to 20

I think i need to write a while loop which increments the value of field 1 by 1 and until it reaches the upper limit is (20 here).

Please help

This will run in any standard Unix shell:

Code:
printf "Enter Starting id: "
read start
printf "Enter Closing id: "
read close

## You should first check that the user has entered valid numbers

FIELD2="USER" 
FIELD3="TEST"
FIELD4="12345"
FIELD5="00000"
n=$start
while [ $n -le $close ]
do
  FIELD1=$n
  echo "INSERT INTO TABLE( FIELD1, FIELD2, FIELD3, FIELD4, FIELD5 ) "
  printf " VALUES ( '%s','%s','%s','%s','%s') \
       "$FIELD1" "$FIELD2" "$FIELD3" "$FIELD4" "$FIELD5"
  n=$(( $n + 1 ))
done > output.sql

# 4  
Old 06-10-2009
Bug

Thanks .. It worke fine :-)
# 5  
Old 06-10-2009
you can get rid of few more lines
1)if your FIELD2,FIELD 3...FIELD5 are fixed
use the values directly in printf i mean no need to assign them to variable and use it
2)there is no need to assingn $start to n
3)n=$(( $n + 1 )) is <===> n=$((n+1))
# 6  
Old 06-10-2009
Quote:
Originally Posted by vidyadhar85
you can get rid of few more lines

Who cares? Lines are cheap.

Avoiding redundancy and bloat is one thing; playing golf is best left for amusement.
Quote:
1)if your FIELD2,FIELD 3...FIELD5 are fixed
use the values directly in printf i mean no need to assign them to variable and use it

It is good programming practice to avoid hard-coded values.
Quote:
2)there is no need to assign $start to n

Variables should reflect their purpose. The start doesn't change; only the index changes. What if the start variable is needed later in the program?
Quote:
3)n=$(( $n + 1 )) is <===> n=$((n+1))

The spaces are for legibility.

While POSIX allows the omission of the dollar sign on a variable in arithmetic expansion, the original wording of that part of the spec was not clear, and some major shells (dash and the BSD sh) did not allow it.

Therefore, for portability, it is a good idea to use the dollar sign.
# 7  
Old 06-10-2009
It depends on individual
wheather he want to circle around variable like early 80's people used to do
at the end of the day they used to spend more time to give a name to variable rathere than the logic of the program
and I don't think lines are cheap for every oneSmilie
I belive in doing 1+1 as 1+1 not as A=1;B=1 c=A+B
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Help with incrementing the date

I have a date variable like 2012-12-31 ( YYYY -MM -DD ) in flat file and it has to be incremtented by 1 every time i run the script Example : i tried the below script after data modifcation but this does not seem to work expr `20121231 +%Y%m%d` + 1 Note : Mine is not a GNU... (4 Replies)
Discussion started by: akshay01987
4 Replies

2. UNIX for Dummies Questions & Answers

Incrementing variable in for

Hi, want to increment a variable in a for loop like this: for (( c=$total-1; c>=0; c-- )) do if ; then maximo=$valores fi done But it gives the error: No such file or directory How can i do this only incrementing the c variable? Thanks (8 Replies)
Discussion started by: limadario
8 Replies

3. Shell Programming and Scripting

Incrementing with a twist - please help

I'm currently trying to write a ksh or csh script that would change the name of a file found in directories and attach to the name an incrementing three digit number. I know how to write a script that will go: 000, 001, 002, 003, etc The twist is I need more increments then allowed by a 3... (11 Replies)
Discussion started by: Rust
11 Replies

4. Homework & Coursework Questions

Incrementing Variable resets outside of while loop

1. The problem statement, all variables and given/known data: Variable is resetting to 0 after incrementing in while loop My bit of scripting displays the current users logged in the machine. Then it reads in a specific username and displays the processes for that user. The portion that I... (3 Replies)
Discussion started by: ratzlaff
3 Replies

5. Programming

incrementing variables in C++

Hello, what is the result of the below, and how does it work? int i = 5; cout << i++ * ++i << endl; cout << i << endl; (12 Replies)
Discussion started by: milhan
12 Replies

6. Shell Programming and Scripting

Incrementing a variable is not happening

Hi All, Iam trying to increment a variable Following is the code #!/usr/bin/ksh i=1; i='expr $i+1'; echo $i; Output: expr $i+1 not able to understand why its happening in that way i was expecting result as 2... if the above method is worng .. can you help how i can get... (3 Replies)
Discussion started by: kiranlalka
3 Replies

7. Shell Programming and Scripting

Need help with incrementing date in while loop.

I need to execute a KornShell (SunOS 5.9) script against a range of dates: endDate=20080804 extractDate=20080401 while ; do batch < scripts/myshellscript.sh $extractDate ## add 1 day to extractDate ## done My question is how do I increment the extractDate variable and still have it... (3 Replies)
Discussion started by: Robert W.Mills
3 Replies

8. Post Here to Contact Site Administrators and Moderators

No. post not incrementing

Hi Admin, i just noticed that when I do postings, the number does not increment. eg : Post A -Total Posts 312 Post B - Total Posts 312 Post C - Total Posts 313 Post D - Total Posts 313 Why is this so? Can you kindly check this out? Thank you. (5 Replies)
Discussion started by: incredible
5 Replies

9. Shell Programming and Scripting

New iteration of for-loop without incrementing?

Another question, is it possible to, in a for-loop incrementing until it reaches a certain number, to have it loop again without incrementing? Just have it drop what it is doing when it reaches this command and start again at the same number it was at? I know I could make a while loop and just... (0 Replies)
Discussion started by: jeriryan87
0 Replies

10. Shell Programming and Scripting

incrementing a for loop

I have, LIST="a b c d e" for word in $LIST do echo $word done would give me a b c d e With the first iteration of the for loop, I get "a" as the result. Is it possible that I get both "a" and "b" in only the first iteration. In the next iteration I get "c" and "d" and so on.... (2 Replies)
Discussion started by: run_time_error
2 Replies
Login or Register to Ask a Question