помогите разобраться с shell-скриптом (небольшой непонятный код)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

boobo
Сообщения: 8

помогите разобраться с shell-скриптом

Сообщение boobo »

Всем привет!!!

Я в Линуксе мало что понимаю, но охота понимать.

Мне надо файл создать, а в нем следующее прописать:

#!/bin/sh
PRN_BIN=/usr/local/sbin/usb_printerid
PRN_FRM=/usr/local/sbin/*МОДЕЛЬ ВАШЕГО ПРИНТЕРА*.dl
if [ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ]; then
sleep 5
$PRN_BIN /dev/usb/lp0 | grep -q FWVER || cat $PRN_FRM > /dev/usb/lp0
fi
killall hotplug.sh

У меня вопросы:
Я так понимаю:
1)#!/bin/sh - это то, что будет исполнять этот файл. Зачем тогда #! ?????
2) PRN_BIN=/usr/local/sbin/usb_printerid - это переменная
PRN_FRM=/usr/local/sbin/*МОДЕЛЬ ВАШЕГО ПРИНТЕРА*.dl - это тоже переменная
if [ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ]; then - это условие (эта строка мне полностью непонятна)
sleep 5 - ждать 5 секунд (правда непонятно зачем)
$PRN_BIN /dev/usb/lp0 | grep -q FWVER || cat $PRN_FRM > /dev/usb/lp0 (эта тоже непонятна)
fi - конец
killall hotplug.sh - это понятно

Пожалйуства побольще объяснений. Заранее спасибо!
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: помогите разобраться с shell-скриптом

Сообщение deadhead »

[x] close
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: помогите разобраться с shell-скриптом

Сообщение frp »

boobo писал(а):
02.07.2009 09:44
1)#!/bin/sh - это то, что будет исполнять этот файл. Зачем тогда #! ?????

Строка #!/bin/sh есть для того, чтобы система поняла, чем она должна исполнять скрипт. Если написать без #! то система просто выполнит команду /bin/sh вместо того, чтобы использовать /bin/sh в качестве интерпретатора.
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

Так с интерпритатором понятно, а вот ACTION нигде не могу найти, даже в ваших ссылках
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: помогите разобраться с shell-скриптом

Сообщение Nymin »

это имя переменной
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: помогите разобраться с shell-скриптом

Сообщение deadhead »

boobo писал(а):
02.07.2009 09:44
[ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ]

значение переменной $ACTION есть add
или
входной параметр скрипта ($1) есть usb
или
значение переменной $DEVFS есть /proc/bus/usb
[x] close
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: помогите разобраться с shell-скриптом

Сообщение butch »

boobo писал(а):
02.07.2009 09:44
if [ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ]; then - это условие (эта строка мне полностью непонятна)
man test
|| = ИЛИ. тоесть если выполняется одно из условий в данном примере.
boobo писал(а):
02.07.2009 09:44
sleep 5 - ждать 5 секунд (правда непонятно зачем)
для инициализации принтера, скорее всего.

$PRN_BIN /dev/usb/lp0 | grep -q FWVER - выцепляем данные о принтере, | = перенаправление вывода. грепаем по строке, если находим указанную строку - ниче не делаем. если не находим - выполняется вторая часть cat $PRN_FRM > /dev/usb/lp0, что помоему бред =) скорее должно быть && чтобы в случае наличия FWVER прошивка в принтер заливалась.
как понимаю вещается в скрипты udev?
кстати, в нормальных дистрах все это уже работает изкаробки после установки foo2zjs
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: помогите разобраться с shell-скриптом

Сообщение drBatty »

butch писал(а):
02.07.2009 11:01
|| = ИЛИ. тоесть если выполняется одно из условий в данном примере.
нет
X || Y || Z
выполняется X, и
если X завершилось с ошибкой - Y,
если Y тоже с ошибкой - Z

("с ошибкой" в данном случае - команда вернула НЕ НУЛЬ, это бывает если в правду была ошибка, либо условие не верное ("$ACTION" != "add"))

boobo вам ссылочки дали, почитайте. там всё написано.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: помогите разобраться с shell-скриптом

Сообщение drBatty »

boobo писал(а):
02.07.2009 09:44
$PRN_BIN /dev/usb/lp0 | grep -q FWVER || cat $PRN_FRM > /dev/usb/lp0 (эта тоже непонятна)

скрипт то-ли неполный, то-ли...
FWVER наверное имя скрипта
grep -q проверяет, нет ли уже такого скрипта в работе. и если таких скриптов нету, то в принтер заливается прошивка.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: помогите разобраться с shell-скриптом

Сообщение butch »

drBatty писал(а):
02.07.2009 11:04
нет
X || Y || Z
выполняется X, и
если X завершилось с ошибкой - Y,
если Y тоже с ошибкой - Z

butch писал(а):
02.07.2009 11:01
if [ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ] then

здесь идет проверка условий []. и в данном случае проверяются возвраты команд тест (тру\фэлс). здесь логическое ИЛИ Булевая алгебра
drBatty писал(а):
02.07.2009 11:09
FWVER наверное имя скрипта
grep -q проверяет, нет ли уже такого скрипта в работе. и если таких скриптов нету, то в принтер заливается прошивка.

чета у вас с телепатией туго.

Код: Выделить всё

butch@anton-f:~$ sudo usb_printerid /dev/usb/lp0
[sudo] password for butch:
GET_DEVICE_ID string:
MFG:Hewlett-Packard;MDL:HP LaserJet 1018;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1018;FWVER:20051028;
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

Дак я понимаю, что там проверка и инициализация принтера. Я не понимаю, что значит ACTION. Что дает нам проверка ACTIOn = add. Это проверка на то воткнул ли я принтер что ли?

И зачем мы стваим &, если до этого мы для двух переменных ничего не делали. И раз переменную ADD я нигде не вводил, значит она встроеная? А что она значит то?
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: помогите разобраться с shell-скриптом

Сообщение deadhead »

boobo писал(а):
02.07.2009 13:26
Я не понимаю, что значит ACTION. Что дает нам проверка ACTIOn = add.

Выкладывайте тогда откуда у вас информация что
boobo писал(а):
02.07.2009 09:44
Мне надо файл создать, а в нем следующее прописать:

и как вы будете его затем использовать... предполагаю что это как-то связано с правилами udev
boobo писал(а):
02.07.2009 13:26
переменную ADD я нигде не вводил

почему вы решили что это переменная??!

Короче, колитесь откуда вы взяли этот скрипт?
[x] close
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

у меня есть точка доступа, но не работает прнтер с ней, вот я и поспрашал:
http://wl500g.info/showthread.php?t=19915
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: помогите разобраться с shell-скриптом

Сообщение drBatty »

butch писал(а):
02.07.2009 12:16
здесь идет проверка условий []. и в данном случае проверяются возвраты команд тест (тру\фэлс). здесь логическое ИЛИ Булевая алгебра

понятно, что это булева алгебра. я просто обращаю внимание на тот факт, что части выражения вовсе не все выполняются, тут три команды [, и в зависимости от результатов, выполняются не все 3, 1 ИЛИ 2 ИЛИ 3 этих команды. ИМХО это ОЧЕНЬ важно для понимания работы скрипта.
дело в том, что в обычной алгебре(в т.ч. и булевой) всегда выполняются ВСЕ части выражения, а вот в этой - только некоторые.
про телепатию: да, не сообразил. нету у меня принтера под рукой...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: помогите разобраться с shell-скриптом

Сообщение deadhead »

boobo
здесь вы найдете ответ на вопрос что такое ACTION и компания
[x] close
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: помогите разобраться с shell-скриптом

Сообщение butch »

boobo писал(а):
02.07.2009 14:59
у меня есть точка доступа, но не работает прнтер с ней, вот я и поспрашал:
http://wl500g.info/showthread.php?t=19915

там же все разжевано!
drBatty писал(а):
02.07.2009 15:01
части выражения вовсе не все выполняются, тут три команды [, и в зависимости от результатов, выполняются не все 3, 1 ИЛИ 2 ИЛИ 3 этих команды. ИМХО это ОЧЕНЬ важно для понимания работы скрипта.
дело в том, что в обычной алгебре(в т.ч. и булевой) всегда выполняются ВСЕ части выражения, а вот в этой - только некоторые.
неправильно.
это if then. между ними идет условие, если оно тру - будет выполняться последующий после then код.
чтобы было яснее, для if then это выглядит так:
if true || false || false then
тоесть в случае || (ИЛИ) если одно из тру - будем выполняться.
именно это присутвует в скрипте.
и никак это не значит что если первое false, то второе мы не выполняем.
кнчно же нужно признать, что || и && - это связка команд по цепочкам на основе кода возврата. но не в случае проверки условия в if then
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: помогите разобраться с shell-скриптом

Сообщение drBatty »

butch писал(а):
02.07.2009 15:22
boobo писал(а):
02.07.2009 14:59
у меня есть точка доступа, но не работает прнтер с ней, вот я и поспрашал:
http://wl500g.info/showthread.php?t=19915

там же все разжевано!
drBatty писал(а):
02.07.2009 15:01
части выражения вовсе не все выполняются, тут три команды [, и в зависимости от результатов, выполняются не все 3, 1 ИЛИ 2 ИЛИ 3 этих команды. ИМХО это ОЧЕНЬ важно для понимания работы скрипта.
дело в том, что в обычной алгебре(в т.ч. и булевой) всегда выполняются ВСЕ части выражения, а вот в этой - только некоторые.
неправильно.
это if then. между ними идет условие, если оно тру - будет выполняться последующий после then код.
чтобы было яснее, для if then это выглядит так:
if true || false || false then
тоесть в случае || (ИЛИ) если одно из тру - будем выполняться.
именно это присутвует в скрипте.
и никак это не значит что если первое false, то второе мы не выполняем.
кнчно же нужно признать, что || и && - это связка команд по цепочкам на основе кода возврата. но не в случае проверки условия в if then

if/then вообще к этому не имеет отношения.

Код: Выделить всё

true || [...]

в этом коде [...] ВООБЩЕ НЕ БУДЕТ ВЫПОЛНЯТСЯ. попробуйте сами. например

Код: Выделить всё

echo "test" || echo "AAA"

как видите - выводится только "test". потому-что echo "AAA" просто игнорируется.

PS: если первое - труЪ - остальное выполнять нет никакого смысла, это-же ИЛИ. такая логика создателей bash(впрочем как и си)
удобно например в таком случае:

Код: Выделить всё

команда_которая_иногда_ошибается || { echo "Возникла ошибка $?"; exit 68; }

тут в случае ошибки печатается сообщение, и скрипт прерывает свою работу.
или ещё пример, теперь с &&

Код: Выделить всё

./configure && make && make install

тут выполняется скрипт configure, и ЕСЛИ небыло ошибок выполняется make, и ЕСЛИ небыло ошибок выполняется make install.
Зачем нужны if/then? ;)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

Команде qrep нужен входной поток, а тут их два что ли?
/usr/local/sbin/usb_printerid /dev/usb/lp0 | grep -q FWVER

и с каким она будет работать или с двумя, т.е. она ищет совпадение в двух файлах. а тогда какое выолнятеся условие: совпало 1 И 2, 1 или 2?

и почему иногда ставят >
а иногда >>

почему иногда для if ставят []
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

И еще:

echo "# Printer" >> pre-boot - зачем значок #
echo "/bin/echo "/usr/local/sbin/hotplug.sh >> /proc/sys/kernel/hotplug" >> pre-boot - тут где-то ошибка??!
Спасибо сказали:
Аватара пользователя
altwazar
Сообщения: 427
Статус: Zz
ОС: Calculate

Re: помогите разобраться с shell-скриптом

Сообщение altwazar »

boobo писал(а):
03.07.2009 06:58
и почему иногда ставят >
а иногда >>

почему иногда для if ставят []


> - создаст новый файл
>> - добавит в конец файла (если нет, то создаст)
[] - man test
Спасибо сказали:
Аватара пользователя
GMar
Сообщения: 237
Статус: Будущий математик
ОС: Kubuntu,Ubuntu(UNR) 10.04

Re: помогите разобраться с shell-скриптом

Сообщение GMar »

Команде qrep нужен входной поток, а тут их два что ли?
/usr/local/sbin/usb_printerid /dev/usb/lp0 | grep -q FWVER


один... посмотрите внимательно:
при вызове программы мы указываем ее имя и аргументы через пробел. так как запись /dev/usb/lp0 отделена пробелом, то она будет воспринята как аргумент, независимо от данных, лежащих в /dev/usb/lp0. у баша нет мозга, у него есть синтаксис. Синтаксис описан в приведенных выше ссылках. Не спешите, читать нужно не по диагонали, нужно вчитываться.

и почему иногда ставят >
а иногда >>


это перенаправление ввода-вывода. первое - перезапись, второе - дозапись.
посмотрите на примере:
1)

Код: Выделить всё

ls > temp

2)

Код: Выделить всё

ls >>temp2

каждую команду выполните по пять раз и посмотрите в чем разница между файлами temp и temp2

почему иногда для if ставят []

почему вы ставите скобки в выражении (a+b)(c+d) - это про математику, операция умножения приоритетней чем сложение, та же запись без скобок даст совсем другой результат. Логические операции тоже имеют приоритеты, почитайте документацию, чтобы разобраться

Код: Выделить всё

echo "# Printer" >> pre-boot - зачем значок #

команда echo выводит свой аргумент на стандартный вывод, так как у вас перенаправление, то происходит дозапись в файл pre-boot строки "# Printer". на процесс выполнения команды echo наличие знака решетки не влияет, просто надо вот написать с решеткой и все

echo "/bin/echo "/usr/local/sbin/hotplug.sh >> /proc/sys/kernel/hotplug" >> pre-boot - тут где-то ошибка??!

судя по количеству кавычек видимо да, ошибка.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: помогите разобраться с shell-скриптом

Сообщение butch »

drBatty писал(а):
02.07.2009 19:34
if/then вообще к этому не имеет отношения.

я же в личку кинул ссылку вроде? щас не полезу уже уточнять, что было раньше, этот пост или личка.
одно дело цепочки команд, другое абсолютно(!!!!) - условные операторы.
читаем:
http://gazette.linux.ru.net/rus/articles/a...3.html#ARITHOPS
ниже абзац о логических операциях!
и там же находятся примеры с этими самыми if\then!

сами пораскиньте москами. если для if нужно указать несколько условий и выполнить на основе нескольких условий лишь одну команду, вы вкладывать будете внутрь еще if\then для каждого условия??
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

echo "if [ -w /dev/usb/lp0 ]" >> post-boot
echo "cat /usr/local/sbin/sihp1018.dl>/dev/usb/lp0" >> post-boot
- это надо понимать так: если файл существует, то пихаем все в dev/usb/lp0.
А почему тогда нельзя написать:
echo "if -w /dev/usb/lp0 " >> post-boot - БЕЗ []
echo "cat /usr/local/sbin/sihp1018.dl>/dev/usb/lp0" >> post-boot . Ведь там еще условий на проверку нет!

/usr/local/sbin/usb_printerid /dev/usb/lp0 | grep -q FWVER - дак если grep будет искать в /dev/usb/lp0, зачем тогда /usr/local/sbin/usb_printerid
Спасибо сказали:
Аватара пользователя
altwazar
Сообщения: 427
Статус: Zz
ОС: Calculate

Re: помогите разобраться с shell-скриптом

Сообщение altwazar »

boobo писал(а):
03.07.2009 08:54
А почему тогда нельзя написать:
echo "if -w /dev/usb/lp0 " >> post-boot - БЕЗ []
echo "cat /usr/local/sbin/sihp1018.dl>/dev/usb/lp0" >> post-boot . Ведь там еще условий на проверку нет!


[] в иф это и есть проверка. Гляньте man test.
Спасибо сказали:
boobo
Сообщения: 8

Re: помогите разобраться с shell-скриптом

Сообщение boobo »

Дак, то что # не влияет на echo итак ясно (она же в ковычках), я то имел в виду для чего # в файле который я создаю
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: помогите разобраться с shell-скриптом

Сообщение drBatty »

butch писал(а):
03.07.2009 08:39
одно дело цепочки команд, другое абсолютно(!!!!) - условные операторы.

самый прикол в том, что [ это такая команда
запись [ X ] почти эквивалентна записи test X
скобки [...] НЕ ЯВЛЯЮТСЯ частью shell, это такие команды.
а вот

Код: Выделить всё

if УСЛОВИЕ then; ДЕЙСТВИЕ; fi

это ЧАСТЬ ЯЗЫКА bash. в качестве "УСЛОВИЕ" можно подставлять любые команды, хотя обычно используют test и [....]
например:

Shell

$ if cat /XXXXXX; then echo "всё ок"; else echo "ОШИБКА $?"; fi cat: /XXXXXX: Нет такого файла или каталога ОШИБКА 1

то-же самое можно переписать и не используя if/then/fi

Shell

$ cat /XXXXXX && echo "всё ок" || echo "ОШИБКА $? cat: /XXXXXX: Нет такого файла или каталога ОШИБКА 1

а можно ничего никуда не заворачивать, так использовать:

$

[ -f /XXXXXX ]; echo $? 1

как видите, ответ 1, что значит - false, а конкретнее - "нет такого файла"

butch писал(а):
03.07.2009 08:39
если для if нужно указать несколько условий и выполнить на основе нескольких условий лишь одну команду, вы вкладывать будете внутрь еще if\then для каждого условия??
буду. а может не буду. а может буду использовать while/continue, а может && - это от задачи зависит. связки && || объединяют КОМАНДЫ, а не условия.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: помогите разобраться с shell-скриптом

Сообщение butch »

drBatty писал(а):
03.07.2009 13:06
самый прикол в том, что [ это такая команда

butch писал(а):
02.07.2009 11:01
man test

вы молодец. пасиба что сообщили. а то забыл. целый день ведь прошел =)))
drBatty писал(а):
03.07.2009 13:06
буду. а может не буду. а может буду использовать while/continue
давайте всетаки использовать вещи правильно.
и теперь давайте вместе рассмотрим примеры, раз уж читать не хотим. надеюсь скопистить в терминал сможете? =)

логическое ИЛИ (or)

возьмем простейший пример с одним условием (представим что if проверяет тест. ведь тест всеравно вернет или true или false, ведь так? в общем опустим test)

Код: Выделить всё

if false
   then
      echo "ты не прав"
fi

в данном случае на экране ничего не отобразится. оно и понятно =) можете замунить false на true и удостоверится, что сообщение будет отображено.
теперь усложним задачу, допустим у нас два условия, и если одно из них верно, мы должны вывести текст. как это сделать?
видимо по логике drBatty нужно использовать вложенный if\then. но как? если в первом условии будет false - мы не проверим второе, и тогда не напечатаем текст, несмотря на то, что второе условие - верное.
вот незадача, да? =)))

теперь верный ответ для if\then

Код: Выделить всё

if true || false || false
   then
      echo "ты не прав"
fi

можете как угодно переставлять условие if - от этого ничего не изменится и проверятся будут все уловия по правилам булевой алгебры.
здесь условия объедены || - логическим ИЛИ. но как же, спросит drBatty, это получается?!?
ведь:
drBatty писал(а):
02.07.2009 15:01
я просто обращаю внимание на тот факт, что части выражения вовсе не все выполняются, тут три команды [, и в зависимости от результатов, выполняются не все 3, 1 ИЛИ 2 ИЛИ 3 этих команды.

drBatty писал(а):
02.07.2009 19:34
if/then вообще к этому не имеет отношения.
Код
true || [...]

в этом коде [...] ВООБЩЕ НЕ БУДЕТ ВЫПОЛНЯТСЯ. попробуйте сами. например
Код
echo "test" || echo "AAA"

как видите - выводится только "test". потому-что echo "AAA" просто игнорируется.

PS: если первое - труЪ - остальное выполнять нет никакого смысла, это-же ИЛИ. такая логика создателей bash(впрочем как и си)

я уже в 5 раз вам говорю: не стоит применять идею последовательного выполнения команд на основе кода возврата и логические операции. то что знаки одинаковые (|| и &&) совсем не значит что это одно и тоже.

вот про sed я бы вас послушал.
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: помогите разобраться с shell-скриптом

Сообщение deadhead »

boobo писал(а):
03.07.2009 09:21
Дак, то что # не влияет на echo итак ясно (она же в ковычках), я то имел в виду для чего # в файле который я создаю

Покажите где в скрипте, пероставленом вами, есть # (кроме первой строки #!/bin/sh)??? Я так понимаю по скрипту в первом посте у вас вопросов больше нет? ваша проблема решилась?
[x] close
Спасибо сказали:
Аватара пользователя
altwazar
Сообщения: 427
Статус: Zz
ОС: Calculate

Re: помогите разобраться с shell-скриптом

Сообщение altwazar »

butch писал(а):
03.07.2009 14:25
возьмем простейший пример с одним условием (представим что if проверяет тест. ведь тест всеравно вернет или true или false, ведь так? в общем опустим test)

test вроде как вернет код завершения. true и false это вроде как тоже команды.

butch писал(а):
03.07.2009 14:25
можете как угодно переставлять условие if - от этого ничего не изменится и проверятся будут все уловия по правилам булевой алгебры.

Это совсем не понял, но по-моему тоже не верно.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: помогите разобраться с shell-скриптом

Сообщение butch »

altwazar писал(а):
03.07.2009 14:53
test вроде как вернет код завершения. true и false это вроде как тоже команды.

тру возвращяет код возврата 0. фэлс - 1. и тест и тру и фэлс - команды. что вы этим хотели сказать?

Код: Выделить всё

butch@anton-f:~$ true
butch@anton-f:~$ echo $?
0
butch@anton-f:~$ false
butch@anton-f:~$ echo $?
1

altwazar писал(а):
03.07.2009 14:53
Это совсем не понял, но по-моему тоже не верно.

И и ИЛИ - коммутативные операции
вы можете переставлять их местами - от этого итог не меняется.
Спасибо сказали: