Подсчитайте количество строк файла и сравните - PullRequest
0 голосов
/ 23 марта 2020

Мне нужно посчитать количество строк в файле и затем отправить сообщение в зависимости от того, меньше или равно 20 строк. Я пытаюсь сделать это следующим образом:

touch file.txt
echo "hello" > file.txt
nr_lines = $(wc -l < file.txt)
if[$nr_lines -le 20]; then
  echo "number of lines is less than 20."
fi

Но это не работает. Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 23 марта 2020
nr_lines = $(wc -l < file.txt)
if[$nr_lines -le 20]; then

Это должно быть:

nr_lines=$(wc -l < file.txt)
if [ $nr_lines -le 20 ]; then

Я бы использовал awk, хотя.

awk 'NR>=20{exit} END{if(NR<20)print "number of lines is less than 20"}' file.txt
0 голосов
/ 24 марта 2020

Вы много делаете правильно! В вашем коде всего несколько синтаксических ошибок, из-за которых он не работает.

  1. Bash не любит пробелы в присваиваниях переменных
    • Изменено nr_lines = $(wc -l < file.txt) на nr_lines=$(wc -l < file.txt)
  2. Bash ЛЮБИТ пробелы, когда дело доходит до логических операторов! :)
    • Изменено [$nr_lines -le 20] на [ $nr_lines -le 20 ]
touch file.txt
echo "hello" > file.txt
nr_lines=$(wc -l < file.txt)
if [ $nr_lines -le 20 ]; then
  echo "number of lines is less than 20."
fi

Когда вещи в bash не работают глупо синтаксические ошибки часто бывают:

  • Добавить / удалить где-нибудь пробелы
  • Смешивание с ' и " и `
  • Забыл экранировать специальный символ
...