Bash – How to read mutliline input from stdin into variable and how to print one out in shell(sh,bash)


What I want to do is the following:

  1. read in multiple line input from stdin into variable A
  2. make various operations on A
  3. pipe A without losing 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:


A=`cat /dev/stdin`

if [ ${#A} -eq 0 ]; then
        exit 0
        cat ${A} | /usr/local/sbin/nextcommand

Best Solution

This is working for me:


echo "$myvar"

The quotes around $myvar are important.