2010-08-25 3 views
0

следующего синтаксиса теста является частью КШ сценариясценария оболочки + матч слово в строке без использования эха

[[ $PARAM = TRUE ]] && [[ ` echo $LINE_FROM_FILE | grep -c Validation ` -eq 1 ]] && print "find Validation word" 

Может ли я получить некоторую другую творческую/решение/синтаксис команды для проверки, если проверка слово существует в LINE_FROM_FILE без к использовать команду echo?

LINE_FROM_FILE = "123 Проверка V125 TCP IP = 1.2.56.4"

замечание: нужно точно соответствовать Validation слово

ЛИДИЯ

ответ

0

Вы можете использовать Parameter expansion, который удаляет все до Подтверждение и сравните это с нормальным расширением параметра. Если они не равны, параметр содержит Подтверждение.

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

(Так как всегда есть пробелы до и после Validation они могут быть включены в шаблон. Я не знаю другим способом, чтобы соответствовать начало и конец слова в шаблоны оболочки)

+0

# LINE_FROM_FILE = "1 2 3 ValidationWORD" # [["$ {LINE_FROM_FILE ## * Validation}"! = "$ {LINE_FROM_FILE}" ]] && print OK OK – lidia

+0

попробуйте LINE_FROM_FILE = "1 2 3 ValidationWORD", тогда вы увидите, что это s также соответствуют - :( – lidia

+0

Ваша версия 'grep' также будет соответствовать этой строке. То, что я сделал, это то, что сделала эта версия. –

0

Вы можете сделать это с помощью case:

case $LINE_FROM_FILE in 
    *Validation*) 
     echo "found word Validation" 
     ;; 
    *) 
     echo "did not find word Validation" 
     ;; 
esac 
+0

I can not use case see my new edit [[$ PARAM = TRUE]] – lidia

0
[[ $PARAM = TRUE ]] && [[ "$LINE_FROM_FILE" == *Validation* ]] && print "find Validation word" 
Смежные вопросы