Назад | Перейти на главную страницу

grep + значение соответствия, только если значение в конце строки

пожалуйста, посоветуйте, что не так с моим кодом (я запускаю этот код как на ОС Linux, так и на Solaris)

Я не понимаю строки из:

    "file ended with .tmp"

пример:

Мне нужно проверить, закончился ли $ FILE на .tmp или .old и т.д ...

код со следующим примером устанавливает параметр: FILE = hosts.tmp

поэтому я ожидал, что grep будет соответствовать ".tmp" и потому что .tmp это последние символы

код (скрипт ksh)

     TOKENS=".tmp .old .previous -log temp ,TEMP -OLD previos"

     FILE=hosts.tmp

      for TOKEN in ` echo $TOKENS `

        do

        [[ ` echo $FILE  | grep -c '$TOKEN$'  ` -eq 1 ]] && echo "file ended with $TOKEN"

        done

Две проблемы с вашим кодом:

1) поскольку ТОКЕН передается в grep, вам нужно избежать - как это:

TOKENS=".tmp .old .previous \-log temp ,TEMP"

2) вы используете одинарные кавычки, что означает, что переменные не расширяются, замените кавычками:

[[ ` echo $FILE  | grep -c "$TOKEN$"  ` -eq 1 ]] && echo file ended with $TOKEN