2010-08-25 3 views
2

Я использовал следующий синтаксис как часть сценария ksh, чтобы проверить, существует ли слово Validation в LINE_FROM_FILE.Как выполнить точное совпадение слов в переменной в ksh?

[[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]] && print "match Validation" 

Проблема такого синтаксиса является то, что она также соответствующими словами, как Valid или ValidationVALID и т.д., и моя цель состоит в том, чтобы точно соответствовать слову Validation в переменной $LINE_FROM_FILE.

Я прошу, если это возможно также использовать синтаксис Perl в моем сценарии, чтобы точно соответствовать слову Validation, например:

[[ ` some perl command ` = Validation ]] && print "match Validation" 

ответ

0

Тест Whet ее строка содержит слово между разделителями слов. Полезным трюком является добавление разделителя слов в начале и в конце строки, если слово находится в начале или в конце строки.

[[ " $LINE_FROM_FILE " == *[![:alnum:]]Validation[![:alnum:]]* ]] 

Это предполагает, что слова состоят только из букв и цифр. Отрегулируйте шаблон, если у вас есть другое определение.

Обратите внимание, что тест, который вы написали, [[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]], представляет собой сложный способ написания [[ $LINE_FROM_FILE = *Validation* ]] (т. Е. Проверка на Validation в качестве подстроки).

0

, если вы используете Баш, вы в удачу:

bash regexs

Пример:

input=$1 


if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]] 
#    ^NOTE: Quoting not necessary, as of version 3.2 of Bash. 
# NNN-NN-NNNN (where each N is a digit). 
then 
    echo "Social Security number." 
    # Process SSN. 
else 
    echo "Not a Social Security number!" 
    # Or, ask for corrected input. 
fi 
+0

у вас есть пример – lidia

+0

пример включен ...../ – ennuikiller

+0

у вас есть соответствующий пример для соответствия словам подтверждения – lidia