Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there a (simple) way to feed variable with end of lines to other program in BASH? Consider example:

flist=$(ls -l)
echo $flist

echo will replace all end of lines with spaces, so my output will be different from the content of the variable. Other example:

echo $flist | grep myfile.txt

This command will not work as expected to output only information about myfile.txt. How do I print the line that contains myfile.txt.

Here is one solution:

cat << EOF | grep myfile.txt       

Anything less ugly?

share|improve this question
up vote 4 down vote accepted

The problem is not echo, is the shell. Try to use double quotes:

echo "$flist" | grep myfile.txt

Should work fine.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.