пожалуйста, посоветуйте, что не так с моим кодом (я запускаю этот код как на ОС 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