redirection error


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting redirection error
# 1  
Old 04-28-2011
redirection error

Hi i am facing a very strange problem

suppose the parameters which i passed to the script is

Code:
-o 140

then my code is as follows
Code:
 echo $* | awk '{ for ( i=0;i<=NF;i++){if ($i= -o) { print ${i+1} } } ' | read abc
echo $abc

abc=`echo $* | awk '{ for ( i=0;i<=NF;i++){if ($i= -o) { print ${i+1} } } '`
echo $abc
140

why this is happening in case of read abc parameter
# 2  
Old 04-28-2011
Quote:
Originally Posted by aishsimplesweet
Hi i am facing a very strange problem

suppose the parameters which i passed to the script is

Code:
-o 140

then my code is as follows
Code:
 echo $* | awk '{ for ( i=0;i<=NF;i++){if ($i= -o) { print ${i+1} } } ' | read abc
echo $abc

abc=`echo $* | awk '{ for ( i=0;i<=NF;i++){if ($i= -o) { print ${i+1} } } '`
echo $abc
140

why this is happening in case of read abc parameter
I even doubt you can run this code, and the syntax your redirecting to read is wrong.
It should be:
Quote:
read abc <<< `awk '{print}' infile`
# 3  
Old 04-28-2011
As Kevin marked them red, these braces should be (), not {}; when correcting them, you are missing a closing }.
That read will fill your variable abc, but not the positional parameter $*. $* will be empty, since there aren't any parameters this way.

Try this:
Code:
$ read LINE; echo $LINE |awk '{for(i=1;i<=NF;i++){if($i=="-o"){print $(i+1)}}}'
hello -o printme -a lala -o printmetoo aaabbb ccc
printme
printmetoo

To check parameters you could also use case/esac or getopts for example.
# 4  
Old 04-29-2011
hi everyone

sry i have wrongly copied the code the actual part of code in my script is as follows

it is the actual code please please help me reagrding this

Code:
 
echo $*
-o 140
 
echo $* | awk '{    for ( i=1; i<=NF; i++ ) { if ($i=="-O" || $i=="-o") { print $(i+1) } } }' | read abc
echo $abc
 
abc=`echo $* | awk '{    for ( i=1; i<=NF; i++ ) { if ($i=="-O" || $i=="-o") { print $(i+1) } } }'`
echo $abc
140

# 5  
Old 04-29-2011
We already wrote something - maybe try the solutions and correct your code? Give feedback? Thank you.
# 6  
Old 04-29-2011
Most shells will run that read command in a subshell. abc will be set in the subshell. The subshell exits as soon as the read is completed. Since changes in a subshell's execution environment are not visible in parents or siblings, the variable abc is left unchanged in the original shell.

If your shell behaves in this way, the following are equivalent and both will print an empty line:
Code:
echo hello | read x
echo $x

echo hello | ( read x )
echo $x

But this will print "hello" since the $x is used within the subshell where it has the value that was read:
Code:
echo hello | ( read x; echo $x )

POSIX allows the shell to run any component of a pipeline in a subshell.

Regards,
Alister
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unable to catch the redirection error when the disk is full

Hi Experts, Problem summary : I am facing the below problem on huge files when the disk is getting full on the half way through the execution. If the disk was already full , the commands fail & everything is fine. Sample Code : head_rec_data_file=`head -1 sample_file.txt` cat... (9 Replies)
Discussion started by: Pruthviraj_shiv
9 Replies

2. Shell Programming and Scripting

Error redirection question

Hi gurus, I have a question, need some of your inputs... I have a command like this : export LINE_COUNT=`wc -l test.dat | awk '{print $1}'` echo $LINE_COUNT --- > gives me 2 which is fine as the file has 2 lines. This works fine if the file test.dat is present but in case... (3 Replies)
Discussion started by: calredd
3 Replies

3. UNIX for Dummies Questions & Answers

about different redirection

explain the redirections 1>, 2>, 3>, ..... and 1< ,2<,3<..... where we use these things thanks Thread moved from AIX forum (2 Replies)
Discussion started by: tsurendra
2 Replies

4. Shell Programming and Scripting

I/O Redirection: how can I redirect error msgs to a temp file

Hi there, I just want to know how can I redirect error msgs returned from running a command (e.g. nslookup) and then only print out the correct output using an if statement?. I've tried the following: where $a is a list of IPs. but I got all the error msgs printed out to screen and... (9 Replies)
Discussion started by: Abdulelah
9 Replies

5. Shell Programming and Scripting

Error with redirection in awk

I'm trying to find average of values in 2nd column in some files. Filenames have following pattern eg: tau_2.54_even_v1.xls tau_2.54_odd_v1.xls tau_1.60_v1.xls tau_800_v1.xls #!/bin/bash for file in pmb_mpi tau xhpl mpi_tile_io fftw ; do for f in "2.54" "1.60" "800" ;do if... (2 Replies)
Discussion started by: vishwamitra
2 Replies

6. Shell Programming and Scripting

output and error redirection

hi :) if condition >&- 2>&- Can anybody explain the redirection in above command Thanks in advance (1 Reply)
Discussion started by: jpriyank
1 Replies

7. Shell Programming and Scripting

sed error : Syntax error: redirection unexpected

My script is throwing the error 'Syntax error: redirection unexpected' My line of code.. cat nsstatustest.html | sed s/<tr><td align="left">/<tr><td align="left" bgcolor="#000000"><font color="white">/ > ztmp.Ps23zp2s.2-Fpps3-wmmm0dss3 HTML tags are getting in the way but they're needed to... (3 Replies)
Discussion started by: phpfreak
3 Replies

8. UNIX for Dummies Questions & Answers

error redirection

i am using 2> to redirect all the standard errors that i get in my bash script.. this command needs to be given in all the statements for which the errors are to redirected.. is there a command that will catch all the errors in all the shell commands that are present inside a script .? pls help.. (7 Replies)
Discussion started by: sais
7 Replies

9. Shell Programming and Scripting

Error file Redirection

Hello All, I was wondering is there any other way in Shell Scripting to redirect the errors to a output file inside a shell script with using a error status checking or a command line redirection. Say without doing this ksh test.ksh 2> error.txt or without doing this ... if ; then... (3 Replies)
Discussion started by: maxmave
3 Replies

10. Shell Programming and Scripting

Redirection or piping error message

I have written a script that appears to work correctly in testing, but is coming up with a starnge error message, script_name: test: 0403-004 Specify a parameter with this command. Redirection or piping of stdin or stdout is allowed only with -b. (156). The script is run by different... (2 Replies)
Discussion started by: mariner
2 Replies
Login or Register to Ask a Question