From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00, DNS_FROM_OPENWHOIS, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=no version=3.2.5 Message-ID: <4BFE6ABC.30306@mail.ru> Date: Thu, 27 May 2010 16:51:08 +0400 From: Oleg User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.*) Gecko/20100402 Thunderbird/3.0pre MIME-Version: 1.0 To: ALT Linux sysadmins' discussion Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam: Not detected X-Mras: Ok Subject: [Sysadmins] =?utf-8?q?grep_-x_=D0=B2__bash?= X-BeenThere: sysadmins@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux sysadmins' discussion List-Id: ALT Linux sysadmins' discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 12:51:18 -0000 Archived-At: List-Archive: Доброго времени суток! Есть скрипт, который проверяет аргументы командной строки, для того чтобы пропускать только те из них, которые соответствуют существующим правилам, как то: только буквы английского алфавита, цифры... : for I in "$@"; do if echo "$I" | LANG=C grep -qvx '[-_.a-z0-9][-_.a-zA-Z0-9@]*' then ... Делает это он замечательно )) Но теперь надо, чтобы он пропускал также 2 исключения - NAME1.BIN и NAME2.SFO Пробую: ./test.sh 12 34 56 for x in "$@"; do echo "$x" | grep -vx 12 -vx 34 grep: 34: No such file or directory не работает, echo "$x" | grep -ve 12 -ve 34 работает, но там-то нет точного соответствия, поэтому пропускается все, в котором есть эти знаки,. например: echo "$x" | grep -ve 1 -ve 3 выдаст только 56, потому что 1 и 3 есть в составе двух других цифр Подскажите, пожалуйста, как это побороть. -- С уважением, Олег