What I want to do is the following:
- read in multiple line input from
stdin
into variableA
- make various operations on
A
- pipe
A
without loosing delimiter symbols (\n
,\r
,\t
,etc) to another command
The current problem is that, I can't read it in with read
command, because it stops reading at newline.
I can read stdin with cat
, like this:
my_var=`cat /dev/stdin`
, but then I don't know how to print it. So that the newline, tab, and other delimiters are still there.
My sample script looks like this:
#!/usr/local/bin/bash
A=`cat /dev/stdin`
if [ ${#A} -eq 0 ]; then
exit 0
else
cat ${A} | /usr/local/sbin/nextcommand
fi
-
This is working for me:
myvar=`cat` echo "$myvar"
The quotes around $myvar are important.
gnud : Should read myvar=$(cat); echo "${myvar}" -- but otherwise my solution exactly.From Tanktalus -
Yes it works for me too. Thanks.
myvar=`cat`
is the same as
myvar=`cat /dev/stdin`
Well yes. From the
bash
man pageEnclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $,
, \, and, when history expansion is enabled, !. The characters $ and
retain their special meaning within double quotes.
0 comments:
Post a Comment