Есть несколько проблем:
имя хоста
Если ваш логин не гарантирует, что эта переменная существует, вы должны использовать вместо нее команду hostname
:
chk=$(hostname)
сш
ssh $host
просто входит в систему и ждет ввода с терминала. Следующая команда выполняется после выхода ssh
. Вы должны добавить команду к вызову ssh
. Было бы слишком много передавать весь материал case
в ssh
, но, насколько я понимаю, вам нужен только результатhostname
:
chk="(ssh "$host" hostname)"
$ head -n 3 file | tr -s '/ -' '\n\n\n' | wc -l
28
Количество 28
похоже, это количество, которое вы получите для первых трех строк заданного текста, если вы разграничите слова пробелами, тире и косой чертой.
Приведенная выше команда разделит три первые строки на одно такое слово в строке, заменив каждый пробел, тире и косую черту на новую строку (и удалив несколько последовательных новых строк с помощью параметра -s
с tr
), и затем подсчитайте количество строк, полученных в результате этого разбиения.
Если вы используете более естественные head -n 3 file | wc -w
, вы получите 25
слов. Это связано с тем, что wc -w
считает только слова, разделенные пробелами, и будет рассматривать как Unix-Like
, так и GNU/Linux
как отдельные слова.
head -n 4 myfile | wc -w
myfile — входной файл, 4 — первые 4 строки
Использование вкладыша awk one -:
awk ' { gsub("[-/]"," ") } NR<4 { w+=NF };END { print w }' <filename>