сценарии tcsh: регулярное выражение в операторе if - PullRequest
0 голосов
/ 23 декабря 2010

как правильно кодировать этот perl-статус в сценарии оболочки tcsh

foreach (@array) {if (/ ^ (pam | pom) /) {dosomething ();}}

1 Ответ

2 голосов
/ 23 августа 2011

Вот один из способов:

#!/bin/tcsh -f

set array = ( foo pam bar pom baz xpam pamx )
alias dosomething echo

foreach elem ($array:q)
    if ($elem:q =~ {pam,pom}*) then
        dosomething $elem:q
    endif
end

Обратите внимание, что выражение в правой части оператора =~ является шаблоном сопоставления файлов, а не регулярным выражением, поэтому это решение не распространяется на все случаи. Если вам нужно сопоставить регулярное выражение, вы можете использовать команду expr:

expr STRING : REGEXP

или, что эквивалентно:

expr match STRING REGEXP
...