Я следую этому руководству по написанию скриптов в bash:
В разделе Числовые сравнения он приводит пример:
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
То, что происходит выше, это то, что мы храним строку команд в переменной bash, а затем вызываем echo для этой переменной. Кажется, что происходит, когда строка вычисляется и команда wc выполняется и возвращает количество строк в управляющий терминал.
Итак, я запускаю свой терминал в Ubuntu 12.04 и пробую что-то похожее:
$ touch sample.txt && echo "Hello World" > sample.txt
$ cat sample.txt
Hello World
$ num='wc -l sample.txt'
echo $num
wc -l sample.txt
Подождите секунду, это не оценило строку и вернуло количество строк. Это просто повторило строку обратно в терминал. Почему я получил разные результаты?
wc -l work.txt
, вместо этого ей присваивается номер 201.