Value not getting printed outside loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Value not getting printed outside loop
# 1  
Old 05-06-2014
Value not getting printed outside loop

Hi all I'm using below code
Code:
#!/bin/bash
export fileclob
cd /home/appsuser/dataload
file='EG.mdd'
chmod 777 $file
dos2unix -ascii -k -q -o  $file $file
sed -e '${/^$/d}' $file
cat $file | while read LINE
do
  echo "line is"
  if [ -n $LINE ]
  then
  echo "line is $LINE"
  echo " "
  Y=${#fileclob}
  if [ $Y = 0 ]
  then
    fileclob=$LINE
     echo  "fileclob_1 $filecloob"
  else
    fileclob="${fileclob},${LINE}"
    echo  "fileclob_2  $fileclob"
  fi
 fi
done

echo "${fileclob} "
sqlplus apps/apps <<EOF
set pagesize 0 feedback off verify off heading off echo off serveroutput on
insert into lshadmin.global_table (file_name,study_name,table_struct)
  values('EG','MK898','$fileclob);
commit;
exit;
EOF

when I try to print the value ${fileclob} outside the loop it is coming null but within the loop it is printing correctly.
There is no blank line at end of file.

Pls help.
# 2  
Old 05-06-2014
Use:
Code:
while read LINE
do
  echo "line is"
  if [ -n $LINE ]
  then
  echo "line is $LINE"
  echo " "
  Y=${#fileclob}
  if [ $Y = 0 ]
  then
    fileclob=$LINE
     echo  "fileclob_1 $filecloob"
  else
    fileclob="${fileclob},${LINE}"
    echo  "fileclob_2  $fileclob"
  fi
 fi
done<$file

Instead of:
Code:
cat $file | while read LINE
do
  echo "line is"
  if [ -n $LINE ]
  then
  echo "line is $LINE"
  echo " "
  Y=${#fileclob}
  if [ $Y = 0 ]
  then
    fileclob=$LINE
     echo  "fileclob_1 $filecloob"
  else
    fileclob="${fileclob},${LINE}"
    echo  "fileclob_2  $fileclob"
  fi
 fi
done

# 3  
Old 05-06-2014
do not pass '$file' through 'cat', change the while block to below and it will work
Code:
while read LINE
do
.
.
.
done < $file

Below is the test
Code:
$ echo ${var1}
$ cat sam | while read line
> do
> var1=$line
> done
$ echo ${var1}
$ echo ${var2}
$ while read line
> do
> var2=$line
> done < sam
$ echo ${var2}
X2 L3 G1 3 6 9
$

# 4  
Old 05-06-2014
I changed it to:
Code:
#!/bin/bash
export fileclob
cd /home/appsuser/dataload
file='EG.mdd'
chmod 777 $file
dos2unix -ascii -k -q -o  $file $file
sed -e '${/^$/d}' $file
 while read LINE
do
  if [ -n $LINE ]
  then
  echo "line is $LINE"
  echo " "
  Y=${#fileclob}
  if [ $Y = 0 ]
  then
    fileclob=$LINE
     echo  "fileclob_1 $fileclob"
  else
    fileclob="${fileclob},${LINE}"
    echo  "fileclob_2  $fileclob"
  fi
 fi
done < $file
echo "file is ${fileclob} "
sqlplus apps/apps <<EOF
set pagesize 0 feedback off verify off heading off echo off serveroutput on
insert into lshadmin.global_table (file_name,study_name,table_struct)
  values('EG','MK898','$file');
commit;
exit;
EOF

echo "file is ${fileclob} " whole statement is not visible after executing the script
# 5  
Old 05-06-2014
try
Code:
for LINE in $(cat $file)

instead of
Code:
cat $file | while read LINE

in your orignal script
# 6  
Old 05-06-2014
its concatenating and printing the values within the loop but ouside the loop same variable becomes null Smilie
# 7  
Old 05-06-2014
for the below statement in your code, what output do you see
Code:
echo "file is ${fileclob} "

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to get " printed on command line?

Hey, Is there a way I can print " in a command line? When I type "echo "set variable = disco"".... This actually prints echo set variable = disco but I would like to print it out as --- echo "set variable = disco" Thanks, Satya (4 Replies)
Discussion started by: Indra2011
4 Replies

2. Shell Programming and Scripting

Variable value not getting printed

Hi, I ma trying to do this but don't know why it is not happening? $r1=10 for i in "1" "2" "3" "4"; do x=`eval echo $i`; echo r${x}; done output: r1 r2 r3 r4 also tried for i in "1" "2" "3" "4"; do x=`eval echo $i`; echo $r${x}; done output: 1 (2 Replies)
Discussion started by: abhi1988sri
2 Replies

3. Shell Programming and Scripting

Need to limit the status printed

Hi, I have the data set as below, 0221500612134|Nutro 30-35 lb. Dry Dg 3 of 10 08/29/13~ 0221503074850|Nutro 30-35 lb. Dry Dg 1 of 10 09/23/13~ 0221503499660|Blue Buff 24-30lb Dog F 1 of 10 02/26/13~ 0221503499660|Iams 15.5-20lb Dog Food 2 of 10 11/12/12~ 0221503499660|Nat Blnc 25-35lb Dog... (1 Reply)
Discussion started by: anandek
1 Replies

4. Programming

Value printed by gdb does not consist with the right value

Hello, I find the value printed by gdb does not consist with the right value.The following is the output. (gdb) 7 while ( ( optc = getopt(argc, argv, ":b:B:h" ) ) != -1 ) { (gdb) 8 printf( "%c %d %s\n", optc, optind, optarg); (gdb) B 5 1-2 7 while ( ( optc =... (1 Reply)
Discussion started by: 915086731
1 Replies

5. UNIX for Dummies Questions & Answers

Messages printed in the shell

Hi, I would like to be able to return to the messages printed in the shell when a process is done, but I have no idea where to look for them. Done nohup script.sh (wd: ~/somesubdir) Can anyone give me a hint? Are these messages printed by bash? They're definitely not... (7 Replies)
Discussion started by: mregine
7 Replies

6. UNIX for Dummies Questions & Answers

Python update already printed line.

Hi. I have a basic script in python that outputs like this.. $ ./test.py 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% ... But how can I make it so the output stays in 1 line? So it would look something like this.. $ ./test.py 10% (1 Reply)
Discussion started by: cbreiny
1 Replies

7. Shell Programming and Scripting

How to make a £ symbol printed from a file?

Hi, I am working on Solaris and facing a problem. I have a .DAT file which simply contains some data in particular format which includes £ symbol. The fomat looks like 001|£30VB | | |T+T250|£30 Value Bundle |1|1|1 |0 |0|0 | |0|1010906 |93731 |TREVORJ |CRBCE1P |1090713 |134739 |JAMESMAT... (2 Replies)
Discussion started by: bhaskar_m
2 Replies

8. UNIX for Dummies Questions & Answers

How to exclude files from printed results

Hello I have application that part of its command I can get list of files to the stout . with the path . like : ./blah/blah/foo.c ./blah11/blah11/foo11.c ./blah12/blah12/foo11.h now I will like to filter this result and for instance see the "*.h" file or the "*.c" file or only the files... (2 Replies)
Discussion started by: umen
2 Replies

9. UNIX for Advanced & Expert Users

lp - order of files printed

I have a shell script that is looping through a list of Postscript files to print. ls -1tr *.PS > print.lst ... PRINT_LIST=`cat print.lst` ... for DMFILE in $PRINT_LIST do lp -d $PRINTER_NAME -o legal $DMFILE ... done The files in print.lst are in the order that they should be... (2 Replies)
Discussion started by: mabrownawa
2 Replies
Login or Register to Ask a Question