Śledzę ten przewodnik skryptowania powłoki bash:
W sekcji Porównania numeryczne przytacza przykład:
anny > num=`wc -l work.txt`
anny > echo $num
201
anny > if [ "$num" -gt "150" ]
More input> then echo ; echo "you've worked hard enough for today."
More input> echo ; fi
Wydaje się, że tak się dzieje powyżej: przechowujemy ciąg poleceń w zmiennej bash, a następnie wywołujemy echo zmiennej. Wydaje się, że tak się dzieje, że łańcuch jest analizowany i wykonywana jest komenda wc i zwraca liczbę linii do terminala sterującego.
Ok, więc uruchamiam mój terminal w Ubuntu 12.04 i próbuję czegoś podobnego:
$ touch sample.txt && echo "Hello World" > sample.txt
$ cat sample.txt
Hello World
$ num='wc -l sample.txt'
echo $num
wc -l sample.txt
Poczekaj chwilkę, która nie oceniła ciągu i zwróciła liczbę wierszy. To tylko powtórzyło ciąg z powrotem do terminala. Dlaczego otrzymałem różne wyniki?
wc -l work.txt
, zamiast tego przypisywany jest numer 201.