Nie tracisz go w zadaniu, ale w echu. Możesz to wyraźnie zobaczyć, jeśli:
echo "${out}"
Podobny efekt zobaczysz w następującym skrypcie:
x="Hello,
I
am
a
string
with
newlines"
echo "====="
echo ${x}
echo "====="
echo "${x}"
echo "====="
które wyjścia:
=====
Hello, I am a string with newlines
=====
Hello,
I
am
a
string
with
newlines
=====
I nie ma to związku z twoim pytaniem, ale i tak chciałbym o nim wspomnieć, wolę używać konstrukcji $ () zamiast znaków odwrotnych, tylko dla dodatkowej korzyści, jaką jest możliwość zagnieżdżania poleceń. Więc twoja linia skryptu staje się:
out=$(grep apache README)
To może nie wyglądać inaczej (i nie jest), ale umożliwia bardziej złożone polecenia, takie jak:
lines_with_nine=$(grep $(expr 7 + 2) inputfile)