Вы использовали одиночную кавычку, а не обратную черту, поэтому для вашей переменной var
фактически задан строковый литерал, а не результат этой команды.Вы бы увидели, что если вы сначала отобразите переменную:
pax$ var='grep -c 'abc' file1'
pax$ echo "[$var]"
[grep -c abc file1]
Версия обратного ключа будет:
var=`grep -c 'abc' file1`
Но я хотел бы предложить использовать bash
, где это возможно длясценарии.Вам будет сложно найти основной дистрибутив, у которого его нет по умолчанию, и некоторые считают его более мощным, чем другие оболочки.На самом деле, в некоторых системах /bin/sh
равен bash
.
Если вы можете пойти по этому пути, то конструкция $()
обычно является лучшей идеей, так как вы можете вкладывать их безболь:
var=$(grep -c 'abc' file1)