- 1
- 2
- 3
- 4
STEAMROOT="$(cd "${0%/*}" && echo $PWD)")
...
rm -rf "$STEAMROOT/"*
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+133
STEAMROOT="$(cd "${0%/*}" && echo $PWD)")
...
rm -rf "$STEAMROOT/"*
http://www.opennet.ru/opennews/art.shtml?num=41469
эпик фейл
#юмор
#идиоты
или это только у меня при чтении кода перед глазами "автоматически" в переменные и плейсхолдеры мысленно подставляются граничные и "невероятные" значения, типа null, пустой строки, 0, NaN, минимальное\максимальное значения, при которых код может упасть с ошибкой или отработать некорректно?
что особенно тревожно в контексте потенциально опасных операций типа delete, eval, а в данном случае и rm - как можно было не предположить, что переменной окружения не окажется в среде окружения?
ведь, на самом деле, элементарных ошибок не так много (как-то: выход за пределы границ [массива], разыменование нулевого указателя, использование-после-освобождения) и, к прочему, все обильнее ловятся современными инструментами статического анализа. я совсем не веду речи про ошибки логического уровня (логичное с точки зрения машины, но неожиданное с точки зрения человека поведение)
посему и последний тег в топике.
> null, пустой строки, 0, NaN
> все обильнее ловятся современными инструментами статического анализа
Может, в этом и дело? Пока Вы писали огнеупорный код на жс и делали вручную то, что мог сделать статический анализ, хаскелепитушки размякали, полагались на конпелятор, не укрепляли тылы и не были подготовлены к такому раскладу.
впрочем, тогда и программы были меньше и проще, у нас не было многопоточности и почти что не было асинхронности (т.е. она формально была, но мы ее не замечали), у нас не было построения интерфейсов в браузерах и мвц на жс и компиляторов в интерпретируемые языки.....
http://cs425322.vk.me/v425322176/15a1/Ugdcp8r-6Us.jpg
Нет, там вообще пиздец какой-то, просто даже количество скобок и кавычек не сходится. Наверное все-таки последнию скобку и кавычку нужно поменять местами.
для скриптов которы под рутом крутятся, нужно быть как минимум параноидальным.
`set -e` по минимуму. иногда `set -o pipefail` и `set -u`.
`set -e` должен был отловить обломавшийся `cd`.
ЗЫ ну да Steam еще только в зачатке. им простительно.
Не совсем. cd $(dirname $0) && echo $PWD -- напечатает каноничный абсолютный путь к директории.