LINUX.ORG.RU

Параметры bash и расширения параметров


0

0

Эта статья сфокусирована на bash, и все примеры выполнялись на системе Linux с командной оболочкой bash. Однако такие же расширения доступны во многих других оболочках, таких как ksh, ash или dash, и вы можете использовать их в этих оболочках на других системах UNIX или даже в других средах, например, в Cygwin.

>>> Подробности

★★★

Проверено: Shaman007 ()

Статью фтопку. И так большинство шеллскриптописателей из за баша не различает = и == в сравнении, так тут ещё и дополнительный геморрой на голову сваливается. Учите POSIX, господа, а то баш второй виндой станет.

gaa ★★
()

имхо bash - ужасное изобретение, пригодное только для небольших скриптов. идея хорошая, реализация хромает. Великие знания, описанные в статье есть и так в манах по башу. Если мне понадобится тонкая обработка аргументов - я лучше просто воспользуюсь чем-нибудь ещё кроме сабжа. низачот.

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

>Учите POSIX, господа, а то баш второй виндой станет.

Линки в студию, сэр! Ибо просто говорить легко - тяжелее предложить что-то более стоющее, что действительно нужно учить. Выкладывайте ссылки, а вот уж общественность (анонимусы :) ) их оценит.

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

>ты считаешь себя умнее программеров из IBM?

>Почему же ты тогда еще не там?

именно потому что считает себя умнее?

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

> ты считаешь себя умнее программеров из IBM? Почему же ты тогда еще не там?

ну судя по городу в его инфо, он вполне может быть из интел, биг дил..

dilmah ★★★★★
()

Не нравится Баш?! Всем читать маны на bash.org.ru !

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

> И чем они лично вам испортили жизнь?

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

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

>ну судя по городу в его инфо, он вполне может быть из интел, биг дил..

Судя дате регистрации и количестве комментариев, это 99% какой-нить малолетний тролль, прогуливающий школу в интернет-кафешке...

Vanilin ★★★★
()

> IBM_dW (*) (18.09.2007 11:50:54)

У Бирди появился конкурент?

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

твоё IMHO == моё IMHO

а статейка ничё так... можно в неё тыкать начинающих одноязычных товарещей.

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

> паренек, ты мал и глуп, не видал больших мастерписов.. код не придерживающийся стандартов -- одно из приметных отличий быдлокода от мастерписов.

Ты, похоже, сами не разбираешся в вопросе, о котором споришь. Что-нибудь про Sha-Bang вобще слышал? Или только и можешь, что унижать других?

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

> Ты, похоже, сами не разбираешся в вопросе, о котором споришь. Что-нибудь про Sha-Bang вобще слышал?

Это когда пишут #!/bin/sh и используют расширения bash'а?

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

это да, там башизмов почти нет. Я на скорый глаз заметил только ${x:3:5} и ${OPTARG//\\//}

dilmah ★★★★★
()

Видел анонс на Опеннете, добавил в TODO, на днях почитаю..

php-coder ★★★★★
()
Ответ на: комментарий от Black_Shadow

> Что-нибудь про Sha-Bang вобще слышал?

ты потише, на такие слова может среагировать Вихрь-Антитеррор

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

>Да, эти кривые башизмы всем жизнь изрядно портят...

А где простому анонимусу можно посмотреть полный список этих самых башизмов, дабы самому определить, портят они мне жизнь или нет. Делать diff POSIX.txt "man bash", покорнейше прошу не предлагать.

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

> Это когда пишут #!/bin/sh и используют расширения bash'а?

Это проблемы тех, кто указывает #!/bin/sh вместо #!/bin/bash, а не проблемы оболочки

Black_Shadow ★★★★★
()

А у мну ссылка не открылась, подумал, подумал, а ibm.com/* у меня в черном списке аднака!

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

> А где простому анонимусу можно посмотреть полный список этих самых башизмов, дабы самому определить, портят они мне жизнь или нет.

например, $((что-то)), массивы...

А чтобы они жизнь не портили, надо отлаживать скрипты, например, под dash, авторы которого утверждают, что он POSIXly correct.

-----

Отвечу товарищам, начавшим сравнения меня и спецов из МежДелМаша.

Я не из интела, к сожалению :(

Специалистов, написавших данную статью я му...ми не считаю: они четко указали, что тут используется именно баш и, заметьте, в заголовке программы пишут именно #!/bin/bash, а не #!/bin/sh как принято по умолчанию. И также они не тянут свой написанный на коленке скриптик в продакшн, а используют только для внутренних нужд. Своим постом я хотел лишь упредить ассоциацию sh с bash.

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

>Это когда пишут #!/bin/sh и используют расширения bash'а?

Если у тебя /bin/sh -> /bin/bash, то кто назовёт тебя (или твой дистр) умным?

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

>> Это когда пишут #!/bin/sh и используют расширения bash'а?

> Если у тебя /bin/sh -> /bin/bash, то кто назовёт тебя (или твой дистр) умным?

Это уже много куда въелось, и не все мантайнеры это выковыривают.

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

> например, $((что-то))

сейчас это есть в позиксе

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

>Это уже много куда въелось, и не все мантайнеры это выковыривают.

Вешать blocker-баги, а не растопыривать пальцы и наезжать на bash. А если завтра эти быдло-мейнтейнеры сделают /bin/sh -> /usr/bin/{python,tcl,perl,...} - будем растопириывать пальцы и орать "{python,tcl,perl,...} - ф топку!"?

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

>> Это когда пишут #!/bin/sh и используют расширения bash'а?

> Если у тебя /bin/sh -> /bin/bash, то кто назовёт тебя (или твой дистр) умным?

Не понял ничего, что ты хотел этим сказать. bash соответствует POSIX, но имеет помимо того свои расширения. Соответственно использование скриптов с оными расширениями и шебангом вида #!/bin/sh на POSIX-совместимом шелле без расширений bash будет затруднительным.

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

>> Это уже много куда въелось, и не все мантайнеры это выковыривают.

> Вешать blocker-баги, а не растопыривать пальцы и наезжать на bash. А если завтра эти быдло-мейнтейнеры сделают /bin/sh -> /usr/bin/{python,tcl,perl,...} - будем растопириывать пальцы и орать "{python,tcl,perl,...} - ф топку!"?

Поздно уже :( Рекомендую пройтись по саурсфоржу и понавешать багов авторам. Интересно, на какой тысяче Вас покинут силы? ;)

Кроме того, например, такую вещь как mkxvpics(когда-то пытался юзать, сейчас её из репозитория выкинули) легче заново переписать, т.к. там и без #!/bin/sh достаточно безграмотности, например в обработке пробелов.

И кстати, основная моя мысль была не "баш фтопку", а "учите POSIX".

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

>>> Это когда пишут #!/bin/sh и используют расширения bash'а?

>> Если у тебя /bin/sh -> /bin/bash, то кто назовёт тебя (или твой дистр) умным?

> Не понял ничего, что ты хотел этим сказать. bash соответствует POSIX, но имеет помимо того свои расширения. Соответственно использование скриптов с оными расширениями и шебангом вида #!/bin/sh на POSIX-совместимом шелле без расширений bash будет затруднительным.

Я думаю, он хотел сказать, что если используешь башевые рсширения, то изволь писать #!/bin/bash в заголовке и добавлять его в dependencies.

Кстати, один камушек в сторону ИБМ: они написали, что "это работает и во многих других шеллах", чем слегка запутали.

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

>bash соответствует POSIX, но имеет помимо того свои расширения.

Он не только "имеет свои расширения", но не совместим полностью с sh. Поэтому делать ссылку /bin/sh -> /bin/bash - как минимум, тупо.

Led ★★★☆☆
()
Ответ на: комментарий от gaa

>Я думаю, он хотел сказать, что если используешь башевые рсширения, то изволь писать #!/bin/bash в заголовке и добавлять его в dependencies.

Это само собой? Но главное, что я хотел сказать: тот, кто делает в дистрибутиве ссылку /bin/sh -> /bin/bash, и сам тупит, и других подставляет.

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

>
       Bash  is  intended  to be a conformant implementation of the IEEE POSIX
       Shell and Tools specification (IEEE Working Group 1003.2).  Bash can be
       configured to be POSIX‐conformant by default.

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

> Я думаю, он хотел сказать, что если используешь башевые рсширения, то изволь писать #!/bin/bash в заголовке и добавлять его в dependencies.

Я это и сам имел ввиду изначально.

stassats ★★★★
()

Половина товарищей может еще скажет, что опера (к примеру) не поддерживает html потому, что поддерживает еще и xhtml?

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

>>Если у тебя /bin/sh -> /bin/bash, то кто назовёт тебя (или твой дистр) умным?

В Debian вообще будет /bin/sh -> /bin/dash. Шеф, что делать ? :)

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

просто непонятны двойные стандарты. Куча народа здесь будет презрительно смотреть на людей которые писали для VC6, не читая стандартов С/С++. Но при этом писать на ГНУ баше, не читая позикс -- это по их мнению нормально..

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

>>Если у тебя /bin/sh -> /bin/bash, то кто назовёт тебя (или твой дистр) умным?

> В Debian вообще будет /bin/sh -> /bin/dash. Шеф, что делать ? :)

Расслабиться и получать удовольствие. dash - хороший _посиксный_ шелл.

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

> А чтобы они жизнь не портили, надо отлаживать скрипты, например, под dash, авторы которого утверждают, что он POSIXly correct.

Что это за dash такой и где такое водится? В федорке даже в дополнительных репозиториях про такой не слышали..

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

http://packages.debian.org/etch/dash

Debian версия ash - минимального шелла.

>>>
"dash" is a POSIX compliant shell that is much smaller than "bash". We take advantage of that by making it the shell on the installation root floppy, where space is at a premium.

It can be usefully installed as /bin/sh (because it executes scripts somewhat faster than "bash"), or as the default shell either of root or of a second user with a userid of 0 (because it depends on fewer libraries, and is therefore less likely to be affected by an upgrade problem or a disk failure). It is also useful for checking that a script uses only POSIX syntax.

"bash" is a better shell for most users, since it has some nice features absent from "dash", and is a required part of the system.
<<<

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

> Что это за dash такой и где такое водится? В федорке даже в дополнительных репозиториях про такой не слышали..

The Debian Almquist Shell http://packages.debian.org/dash

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

> Он не только "имеет свои расширения", но не совместим полностью с sh. Поэтому делать ссылку /bin/sh -> /bin/bash - как минимум, тупо.

А подумать (или ман почитать)? Он как gzip/gunzip или vi/vim - анализирует свое имя. Когда обнаруживает, что его запускают с именем sh, включается в режим совместимости с sh, а как bash - включает все фичи bash.

И в этом очень просто убедиться, достаточно любую хитрую возможность bash вбить в скрипт и убедиться, что он не работает, когда там стоит #!/bin/sh и работает, когда там /bin/bash. Хотя sh ссылка на bash.

Или попробовать себе по chsh шелл сменить на "/bin/sh", который ссылка на bash. И на себе прочувствовать, в чем же разница.

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

> Debian версия ash - минимального шелла.

Так а чем ash не угодил? Почему нельзя было его развивать, если требовался минимальный шелл?

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

>> Он не только "имеет свои расширения", но не совместим полностью с sh. Поэтому делать ссылку /bin/sh -> /bin/bash - как минимум, тупо.

> А подумать (или ман почитать)? Он как gzip/gunzip или vi/vim - анализирует свое имя. Когда обнаруживает, что его запускают с именем sh, включается в режим совместимости с sh, а как bash - включает все фичи bash.

Проблемы bash-only скриптов это не решает.

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