Спасибо за исправления в strongbash

Принято все кроме #!/usr/bin/env bash
Нужно использовать shebang #!/bin/bash
Не нужно использовать shebang переносимости #!/usr/bin/env bash

Если кто хочет подискутировать - давайте аргументы.

Также добавлено исправлено два новых правила которые скоро попадут в crab_syntax

bashxxx

Запрещено удалять tmp в trap EXIT. создание временного файла это своего рода with file и его удаление это end with, чтоб было понтяно где он более не нужен аля область работы с файлом. И если файл остался в тмп то это признак, что есть ошибка в логике.

bashxxx+1

Запрещено в утилитах передавать результаты через промежуточные файлы. Только errno stdout stderr. В исключительных случаях имя файла должно быть в argv или конфиг в argv.

bashxxx+2

Выборочно использовать

spellshell

~~OWNERAPPROVE~~

Nikolay CarbonsoftNikolay Carbonsoft, 19.04.2017 06:38
Запрещено удалять tmp в trap EXIT.

- Нужно будет добавлять rm во все места, где управление может прерваться, например: echo 123 > /tmp/1 do_some /tmp/1 || rm /tmp/1 do_some2 /tmp/1 || rm /tmp/1 rm /tmp/1

Можно сказать, что наличие /tmp/1 покажет, что в do_some проблемы и надо понять причину, но он может падать и по штатным причинам. with file для того и служит, что он обрабатывает внештатные ситуации и всегда закроет дескриптор/удалит временный файл.

- Также, когда в trap у нас удаление - это добавляет удобства при использовании временных файлов. Ты просто пишешь do_some>/tmp/you_script.sh.$$.do_some, и не паришься за его удаление, это довольно удобно.

- Закоментировав trap, можно сохранить все временные файлы для отладки, не нужно комментировать каждый rm. То, что обычно тебе нужен определенный файл - не правда, часто нужные файлы ты берешь из set -x

Anton KlinskihAnton Klinskih, 20.04.2017 02:34 (20.04.2017 02:34)
Не нужно использовать shebang переносимости #!/usr/bin/env bash

Мои аргументы за использование:

  1. Pycharm по умолчанию при создании баш файла добавляет это в начало, прийдется постоянно править?
  2. Если создаешь питоновский скрипт туда пишешь #!/usr/bin/env python и все работает из баша без указания интерпритатора, получается какая-то стандартизация.
Олег СтрижеченкоОлег Стрижеченко, 25.04.2017 05:57

Я локально дебагая на ноуте обламываюсь тоже с bash.

У меня в /bin/bash лежит 3.2 версия, которая не умеет ничего нужного, но если заменить - могу поломать себе что-нибудь системное.

Отказываться от локального дебага в пользу ssh - боль и содомия.

adminadmin, 04.09.2018 09:45
  • отлаживать на маке linux bash скрипты нарушает правило одинаковых ножниц
  • имхо это не правильно
adminadmin, 04.09.2018 09:43
  • Это правило для bash
  • Для питона принято делать через env
Ваш комментарий. Вики-синтаксис разрешён: