The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз командного интерпретатора Bash 5.0, opennews (??), 08-Янв-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


10. "Релиз командного интерпретатора Bash 5.0"  –4 +/
Сообщение от Аноним (10), 08-Янв-19, 11:46 
модули до сих пор не завезли? нет нормального способа заинклудить другой файл (source гуляет от cwd, а не от dirname текущего файла, причем нужно учитывать, что текущий файл может быть симлинком на другой). А еще недавно обнаружил, что переменная $? всегда ноль, если результат сабшелла записывается в локальную переменную:

$ my_func () { aaa=$(exit 1); echo $?; }
$ my_func
1
$ my_func () { local aaa=$(exit 1); echo $?; }
$ my_func
0

Язык бредовый, но тем не менее идеальный для запуска серии процессов, поэтому ругаю я его исключительно в духе "милые бранятся только тешатся" и не променяю его на всякие нескучные фишы

Ответить | Правка | Наверх | Cообщить модератору

26. "Релиз командного интерпретатора Bash 5.0"  –8 +/
Сообщение от Аноним (26), 08-Янв-19, 13:13 
> bash
> язык

Вы это серьёзно? Зачем что-то сложное писать на убогих скриптовых языках?

Ответить | Правка | Наверх | Cообщить модератору

36. "Релиз командного интерпретатора Bash 5.0"  +1 +/
Сообщение от Дартаньян (?), 08-Янв-19, 14:00 
Напиши на "неубогом" языке скрипт восстановления реплики бд мускуля.
Ответить | Правка | Наверх | Cообщить модератору

53. "Релиз командного интерпретатора Bash 5.0"  –4 +/
Сообщение от А (??), 08-Янв-19, 16:02 
Все так плохо, что это уже надо скриптовать? Поменяйте базу уже.
Ответить | Правка | Наверх | Cообщить модератору

56. "Релиз командного интерпретатора Bash 5.0"  +3 +/
Сообщение от Бананимemail (ok), 08-Янв-19, 16:27 
Например, чтобы не встраивать интерпретатор какого-нибудь питона или руби докер-образ. А еще, чтобы все это потом могли поддерживать, т. к. баш мало-мальски знает любой юникс-админ.
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

46. "Релиз командного интерпретатора Bash 5.0"  +3 +/
Сообщение от Аноним (60), 08-Янв-19, 15:20 
> $ my_func () { local aaa=$(exit 1); echo $?; }

Возможно, проблема в том, что $? относится к самому local (который выполнился успешно, так как значения переменным присвоены). А в первом случае оно относится к запускаемым командам независимо от того, используется ли их значение для чего-то или нет (например, для записи в переменную aaa).

Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

59. "Релиз командного интерпретатора Bash 5.0"  +2 +/
Сообщение от Аноним (58), 08-Янв-19, 16:42 
> если результат сабшелла записывается в локальную переменную

всё верно, потому что это результат команды local, раздели объявление локальных переменных и присвоение в них.

Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

62. "Релиз командного интерпретатора Bash 5.0"  +2 +/
Сообщение от zomg (?), 08-Янв-19, 16:55 
Причина в том, что local -- это команда, а не часть синтаксиса. И ее код возврата всегда 0.
Нелогично, но это так. Я сам был очень удивлен, когда первый раз напоролся на эту особенность.
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

71. "Релиз командного интерпретатора Bash 5.0"  –3 +/
Сообщение от Michael Shigorinemail (ok), 08-Янв-19, 19:17 
> source гуляет от cwd

Нет.


$ which shell-error
which: no shell-error in (/home/mike/bin:/usr/local/bin:/bin:/usr/bin:/usr/games)
$ type shell-error
shell-error is /bin/shell-error
$ . shell-error
$ fatal error
bash: error
(кстати, альтовая libshell имени legion@ -- полезная библиотечка для тех, кто действительно пишет на шелле)

PS (спасибо оппоненту):

$ pwd
/home/mike

Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

81. "Релиз командного интерпретатора Bash 5.0"  +/
Сообщение от Аноним (10), 08-Янв-19, 21:06 
> > source гуляет от cwd
> Нет.

Да.


$ tree
.
├── include-me.sh
└── subdir
    ├── include-me.sh
    └── main.sh

1 directory, 3 files
$ cat include-me.sh
echo "Гуляет от cwd"
$ cat subdir/include-me.sh
echo "Шигорин был прав"
$ cat subdir/main.sh
source include-me.sh
$ bash subdir/main.sh
Гуляет от cwd

> (кстати, альтовая libshell ...

Ладно, посмотрю.

Кстати, Шигорин, у меня оффтоповый вопрос тебе, как большому знатоку RPM-based-дистростроительства: какой софтиной свежесобранные RPM складируют по всяко-разным папкам как в [1], создавая при этом все возможные репозитории (createrepo) - репозиторий только для src.rpm, репозиторий только для debuginfo, только для обычных бинарников, и все это помноженное на версии дистра и архитектуры? Или каждый дистр сам для себя пишет такие вещи? Я через rpmbuild добиваюсь 4-х пакетов: src.rpm, debuginfo, debugsource и обычный бинарник, а есть ли готовые инструменты для складирования этих файлов по папкам и автоматического пересоздания rpm-репозиториев - не ясно.

[1] http://fedora-mirror01.rbc.ru/pub/fedora/linux/releases/

Ответить | Правка | Наверх | Cообщить модератору

107. "Релиз командного интерпретатора Bash 5.0"  +1 +/
Сообщение от freehckemail (ok), 09-Янв-19, 15:11 
> Кстати, Шигорин, у меня оффтоповый вопрос тебе, как большому знатоку RPM-based-дистростроительства: какой софтиной свежесобранные RPM складируют по всяко-разным папкам как в [1], создавая при этом все возможные репозитории (createrepo) - репозиторий только для src.rpm, репозиторий только для debuginfo, только для обычных бинарников, и все это помноженное на версии дистра и архитектуры? Или каждый дистр сам для себя пишет такие вещи? Я через rpmbuild добиваюсь 4-х пакетов: src.rpm, debuginfo, debugsource и обычный бинарник, а есть ли готовые инструменты для складирования этих файлов по папкам и автоматического пересоздания rpm-репозиториев - не ясно.

Ты можешь разложить пакеты так, как тебе это заблагорассудится, а затем натравить на корень createrepo. Этого, как правило, достаточно.

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

Главное -- никогда не изменять добавленный пакет постфактум. Когда createrepo --update запускаешь, он не проверяет пакеты, уже находящиеся в базе, на соответствие хэшу.

Ответить | Правка | Наверх | Cообщить модератору

112. "Релиз командного интерпретатора Bash 5.0"  +/
Сообщение от Michael Shigorinemail (ok), 09-Янв-19, 15:41 
>> > source гуляет от cwd
>> Нет.
> Да.

Нет.  В приведённом мной примере и впрямь стоило сразу показать, что стою не в /bin, тут Вы правы.

> $ tree
> ├── include-me.sh
> └── subdir
>     ├── include-me.sh
>     └── main.sh

Это и не опровергал, просто в целом Ваше утверждение счёл неверным (и для кого-то это может оказаться неприятным сюрпризом -- ну как вот помните те любимые детские грабли с тестовым скриптиком, называющимся test? :).

> какой софтиной свежесобранные RPM складируют по всяко-разным папкам как в [1]
> [...] Или каждый дистр сам для себя пишет такие вещи?

Зависит от ожидаемой раскладки репозитория, да.

> [...] а есть ли готовые инструменты для складирования этих файлов по папкам
> и автоматического пересоздания rpm-репозиториев - не ясно.

Тут лучше спросить tigro@ или, скажем, Лёню Кантера -- они наверняка смогут подсказать прицельно, а мне надо искать/читать упомянутый createrepo, чтоб ответить что-то хотя бы про него.

Ответить | Правка | К родителю #81 | Наверх | Cообщить модератору

124. "Релиз командного интерпретатора Bash 5.0"  +/
Сообщение от Аноним (124), 09-Янв-19, 22:01 
Почитайте уже http://mywiki.wooledge.org/BashPitfalls#local_varname.3D.24.... что ли, да и всё остальное в той же вики. Поможет избавиться от иллюзий о том, что скрипты на баше - это просто.
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру