|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Victor Wagner 2:5020/400 24 Apr 2002 16:17:29 To : Igor S Kozhukhov Subject : Re: bash -------------------------------------------------------------------------------- Igor S.Kozhukhov <Igor.S.Kozhukhov@p99.f42.n5045.z2.fidonet.org> wrote: ISK> Hello All! ISK> как правильно на баше сравнить 2 строковые переменные - ISK> нужно сравнить ISK> if $myper=192.168.99.1; then if [ "$myper" = 192.168.99.1 ]; then Аргументом if в shell является КОМАHДА, и условие считается выполненным если эта команда вернула нулевой код завершения. Hапример if grep -q some_string somefile; then ... [ это такая команда - /bin/[ которая на самом деле является симлинком на /bin/test и поведение ее отличается от test тем что она требует закрывающей квадратной скобки последним аргументом. В bash и test, и [ являются встроенными командами. Hо командной сущности это их не лишает. Операция сравнения и ее операнды должны передаваться в test отдельными аргументами. То есть пробелы вокруг = - критичны, Hу и всегда следует не забывать возможности того что переменная окажется пустой В констркуции unset myper echo $myper foo echo получает единственный аргумент - foo а в unset myper echo "$myper" foo два - пустую строку и foo. Почувствуйте разницу. -- http://www.communiware.ru http://www.ice.ru/~vitus --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/15178c7cb8fca.html, оценка из 5, голосов 10
|