Size: a a a

2020 October 16

аᶘ

асоциальный пикотран... in pro.bash
а тут ты резолвишь несуществующую переменную, это нехорошо
источник

аᶘ

асоциальный пикотран... in pro.bash
лохматый
т.е. канонiчный метод?
Скажем так, это фича, которая по каким-то причинам есть в достаточно большом количестве реализаций шеллов, что она стала частью стандарта минимально-необходимого шелла :)
источник

аᶘ

асоциальный пикотран... in pro.bash
${parameter:-[word]}
   Use Default Values. If parameter is unset or null, the expansion of word (or an empty string if word is omitted) shall be substituted; otherwise, the value of parameter shall be substituted.
${parameter:=[word]}
   Assign Default Values. If parameter is unset or null, the expansion of word (or an empty string if word is omitted) shall be assigned to parameter. In all cases, the final value of parameter shall be substituted. Only variables, not positional parameters or special parameters, can be assigned in this way.
${parameter:?[word]}
   Indicate Error if Null or Unset. If parameter is unset or null, the expansion of word (or a message indicating it is unset if word is omitted) shall be written to standard error and the shell exits with a non-zero exit status. Otherwise, the value of parameter shall be substituted. An interactive shell need not exit.
${parameter:+[word]}
   Use Alternative Value. If parameter is unset or null, null shall be substituted; otherwise, the expansion of word (or an empty string if word is omitted) shall be substituted.

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02
источник

аᶘ

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

л

лохматый in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
set -u нужен, чтобы выдавалась ошибка при попытке разыменовать несуществующую переменную
set -e нужен, чтобы программа падала, если выдалась хоть какая-нибудь ошибка
спасибо
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
set -u нужен, чтобы выдавалась ошибка при попытке разыменовать несуществующую переменную
set -e нужен, чтобы программа падала, если выдалась хоть какая-нибудь ошибка
А зачем такое простому скрипту?
источник

Лс

Лень с Самосознанием... in pro.bash
Получается ты сам создал условия и сам их героически преодолел синтаксисом POSIX)
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
${parameter:-[word]}
   Use Default Values. If parameter is unset or null, the expansion of word (or an empty string if word is omitted) shall be substituted; otherwise, the value of parameter shall be substituted.
${parameter:=[word]}
   Assign Default Values. If parameter is unset or null, the expansion of word (or an empty string if word is omitted) shall be assigned to parameter. In all cases, the final value of parameter shall be substituted. Only variables, not positional parameters or special parameters, can be assigned in this way.
${parameter:?[word]}
   Indicate Error if Null or Unset. If parameter is unset or null, the expansion of word (or a message indicating it is unset if word is omitted) shall be written to standard error and the shell exits with a non-zero exit status. Otherwise, the value of parameter shall be substituted. An interactive shell need not exit.
${parameter:+[word]}
   Use Alternative Value. If parameter is unset or null, null shall be substituted; otherwise, the expansion of word (or an empty string if word is omitted) shall be substituted.

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02
Последнее особенно интересно.
Тоесть если переменная задана, то оно её перепишет под default? И не будет трогать пустую
источник

F

Fljúgandi Kettlingur... in pro.bash
Лень с Самосознанием
А зачем такое простому скрипту?
чтобы не проверять постоянно "получилось ли" и не городить тонну && в скриптах типа
cd /usr/lib/mydata
rm -rf *
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Получается ты сам создал условия и сам их героически преодолел синтаксисом POSIX)
Если ты про set -eu, то да, ты прав, это примерно та же причина, почему люди предпочитают языки со статической типизацией вместо динамической или почему в перле люди всегда включают strict-режим: включив эти рычажки, ты с большей гарантией увидишь ошибку (в опечатке в названии переменной или если ты случайно что-то не то или не туда записал) и она не проскочет дальше. По идее это должен решать компилятор или линтер, но ничего хорошего не придумали.
источник

Лс

Лень с Самосознанием... in pro.bash
Fljúgandi Kettlingur
чтобы не проверять постоянно "получилось ли" и не городить тонну && в скриптах типа
cd /usr/lib/mydata
rm -rf *
Ну знаешь, если с удалением играться тогда лучше и так и так проверить)
А так, у меня все скрипты спокойно работают без твоего set, и там нету частокола из &&
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
Если ты про set -eu, то да, ты прав, это примерно та же причина, почему люди предпочитают языки со статической типизацией вместо динамической или почему в перле люди всегда включают strict-режим: включив эти рычажки, ты с большей гарантией увидишь ошибку (в опечатке в названии переменной или если ты случайно что-то не то или не туда записал) и она не проскочет дальше. По идее это должен решать компилятор или линтер, но ничего хорошего не придумали.
Нет, штука нужная, и для чего-либо больше формировщика плейлиста необходимая. Но я всё равно не могу увидеть её пользы в скриптах на сотню строк
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Нет, штука нужная, и для чего-либо больше формировщика плейлиста необходимая. Но я всё равно не могу увидеть её пользы в скриптах на сотню строк
Я вижу смысл, если есть хоть одна переменная в скрипте :)
источник

F

Fljúgandi Kettlingur... in pro.bash
Лень с Самосознанием
Нет, штука нужная, и для чего-либо больше формировщика плейлиста необходимая. Но я всё равно не могу увидеть её пользы в скриптах на сотню строк
у тебя после 9000 лет использования скрипта наконец появился каталог с пробелом в имени, и foo=$bar на 57й строке принес не то, что обычно
источник

Лс

Лень с Самосознанием... in pro.bash
Fljúgandi Kettlingur
у тебя после 9000 лет использования скрипта наконец появился каталог с пробелом в имени, и foo=$bar на 57й строке принес не то, что обычно
Я все каталоги держу в кавычках, ошпарился уже)
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Я все каталоги держу в кавычках, ошпарился уже)
я тебе говорю, желание везде засунуть strict-режим появляется точно такое же, как переход с использования ls на find или for i in * всегда :)
источник

аᶘ

асоциальный пикотран... in pro.bash
А потом ты уходишь на -print0 | xargs -0, потому что охуеваешь от \n
источник

Лс

Лень с Самосознанием... in pro.bash
Ну... Мне и так норм)
Когда напрочь заскучаю и засяду писать tui игрушку на баше или POSIX, тогда и вспомню подобное кунг-фу
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Ну... Мне и так норм)
Когда напрочь заскучаю и засяду писать tui игрушку на баше или POSIX, тогда и вспомню подобное кунг-фу
Я тебе напомню, что ты тоже говорил, что «и так норм», в прошлый раз, а потом и сам уверовал.
Не хочешь учиться на наших ошибках :)
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
А потом ты уходишь на -print0 | xargs -0, потому что охуеваешь от \n
Хотя вот это могу и сейчас использовать,
источник