LINUX.ORG.RU

Скрипт в баше


0

0

Имеем некую стоку вида

фигня1 фигня2 фигня3 EOL

Как средствами баша определить, есть ли в строке последовательность 'фигня2'?
Т.е. нужно своего рода grep внутри строки.

★☆☆
Ответ на: комментарий от as33

Сам я использую решение которое дал suser, просто понял из вопроса, что ты хочешь чистый баш.

sdio ★★★★★
()
Ответ на: комментарий от kosmonavt

PS

[const@ks ~]% bash -c 'a="aaa bbb bbb2 ccc"; [[ "$a" = *b2* ]] && echo True || echo False'
True
[const@ks ~]% zsh -c 'a="aaa bbb bbb2 ccc"; [[ "$a" = *b2* ]] && echo True || echo False'
True
[const@ks ~]% ksh -c 'a="aaa bbb bbb2 ccc"; [[ "$a" = *b2* ]] && echo True || echo False'
True

kosmonavt
()
Ответ на: комментарий от sdio

man bash

[[ expression ]]
    Return a status of 0 or 1 depending on the evaluation of the
    conditional expression expression. Expressions are composed of the
    primaries described below under CONDITIONALEXPRESSIONS. Word
    splitting and pathname expansion are not performed on the words
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    between the [[ and ]]
    ^^^^^^^^^^^^^^^^^^^^^

kosmonavt
()
Ответ на: комментарий от kosmonavt

PS
   When the == and != operators are used, the string to the right of   
   the operator is considered a pattern and matched according to the
   rules described below under Pattern Matching. The return value is 0
                               ^^^^^^^^^^^^^^^^
   if the string matches or does not match the pattern, respectively,
   and 1 otherwise. Any part of the pattern may be quoted to force it
   to be matched as a string.

Эту конструкцию `[[ "$a" == *b2* ]]' видел в скриптах Слаки или Suse
(точно не помню). Т.е., как я понял, глоб применяется не к именам файлов,
а к левой строке в операторах = == !=

kosmonavt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.