Ваш скрипт не работает, потому что есть несколько проблем с этими строками:
list="egrep "^.{$var}$ /usr/share/dict/words"
cat list
- Первая строка не завершена, в ней отсутствует заключительная цитата,
- Даже если вы исправили это, вы присваиваете буквенную строку
list
, а не вывод команды
- RE и имя файла должны быть разделены
cat
не печатает содержимое переменной, echo
делает это.
Итак:
#!/bin/bash
var="$1"
list="$(egrep '^.{'"$var"'}$' /usr/share/dict/words)"
echo "$list"
должно работать.
Или, что еще лучше, вы можете использовать просто команду awk :
awk 'length==5' /usr/share/dict/words
с $1
или любой другой переменной:
awk -v n="$1" 'length==n' /usr/share/dict/words