> -----Original Message-----
> From: Leonard den Ottolander 
> Subject: Bash: read and backslashes in input file
> 
> 
> Hi,
> 
> Consider the following example:
> while read line; do echo ${line}; done < somefile
> read will interpret the backslashes as escapes and remove 
> them from the input. Now I could do
> sed s/'\\'/'\\\\'/ somefile | while read line; do echo ${line}; done
> , but this will create a subshell which is not what I want 
> (need to set some global variables in the while loop).
>  Is there a way that I could pipe the output from sed (or any 
> command) into the while loop without creating a subshell (ie as in the 
> first example)?
> 
> Bye,
> Leonard.


If your not interested in performance issues of your
script... another approach could use 'for' instead of 'while'.
Example:

Given a file called 'testfile' that contains simply:
Line 1
Line 2
Line 3

#!/bin/sh

for line in `sed s/'Line'// testfile`
do
       [ ${line} -eq 2 ] && global_var=${line}
done

echo ${global_var}


Steve Cowles



-- 
redhat-list mailing list
unsubscribe mailto:redhat-list-request@;redhat.com?subject=unsubscribe
https://listman.redhat.com/mailman/listinfo/redhat-list

Reply via email to