Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Код написан вполне себе по канонам шелл программирования (баш точнее, двойные скбоки -- башизм ради ||), но есть странные вещи:
* нафига find скачанного файла? Может быть realpath хотя бы?
* CODE лучше бы передавать аргументом ( ане через глобальную переменную окруженмя)
* на 14 строчке лучше бы проверить, что файл есть
* защита на 19 строке -- странная. А если там ``/etc/`` ? А если ``~`` ?
* ${TMPDIR} лучше всегда брать в кавычки если уж по канонам
>CODE='timezone.txt'
>WDIR="dl-${CODE}"
Скрипт оперирует относительными путями, что намекает, что скрипт рассчитывает быть вызванным из определенной директории. Каков будет багор, если в $PWD будет, скажем, /sys? Всё выглядит так, что текущая директория здесь используется как временная, так что можно было условиться использовать /tmp по её прямому назначению, тем самым оперировать абсолютными путями и избавиться от хаков с find / realpath и root's rm -rf safety
>chown root:root -vf "${F}"
>chmod -vf 644 "${F}"
А как такое может быть, что файл создался wget'ом с неправильными правами? Защита от предыдущего запуска скрипта от неверного пользователя?
>if [[ ${TMPDIR} == '.' || ${TMPDIR} == '..' || ${TMPDIR} == '/' ]]
Микродоёбка: можно избавиться от башизма, будет выглядеть чуть грязнее, но если на портабельность этого говна похуй, то и ладно
if [ "$TMP" = 'aaa' ] || [ "$TMP" = 'bbb' ] ... etc
>Скрипт оперирует относительными путями
Это плохо, да
>, так что можно было условиться использовать /tmp
``mktemp(1)``
>А как такое может быть, что файл создался wget'ом с неправильными правами?
``umask(2)``, ``apropos umask``
>>ожно избавиться от башизма, будет выглядеть чуть грязнее, но если на портабельность этого говна похуй,
Если на портабельность похуй, то зачем избавляться от башизма?:)
Jlou_6JlblKAHAX # 0
MAPTbIwKA # 0
* нафига find скачанного файла? Может быть realpath хотя бы?
* CODE лучше бы передавать аргументом ( ане через глобальную переменную окруженмя)
* на 14 строчке лучше бы проверить, что файл есть
* защита на 19 строке -- странная. А если там ``/etc/`` ? А если ``~`` ?
* ${TMPDIR} лучше всегда брать в кавычки если уж по канонам
Stallman # 0
...тут бы точно не был лишним
>CODE='timezone.txt'
>WDIR="dl-${CODE}"
Скрипт оперирует относительными путями, что намекает, что скрипт рассчитывает быть вызванным из определенной директории. Каков будет багор, если в $PWD будет, скажем, /sys? Всё выглядит так, что текущая директория здесь используется как временная, так что можно было условиться использовать /tmp по её прямому назначению, тем самым оперировать абсолютными путями и избавиться от хаков с find / realpath и root's rm -rf safety
>chown root:root -vf "${F}"
>chmod -vf 644 "${F}"
А как такое может быть, что файл создался wget'ом с неправильными правами? Защита от предыдущего запуска скрипта от неверного пользователя?
>if [[ ${TMPDIR} == '.' || ${TMPDIR} == '..' || ${TMPDIR} == '/' ]]
Микродоёбка: можно избавиться от башизма, будет выглядеть чуть грязнее, но если на портабельность этого говна похуй, то и ладно
if [ "$TMP" = 'aaa' ] || [ "$TMP" = 'bbb' ] ... etc
guest # 0 ⇈
Это плохо, да
>, так что можно было условиться использовать /tmp
``mktemp(1)``
>А как такое может быть, что файл создался wget'ом с неправильными правами?
``umask(2)``, ``apropos umask``
>>ожно избавиться от башизма, будет выглядеть чуть грязнее, но если на портабельность этого говна похуй,
Если на портабельность похуй, то зачем избавляться от башизма?:)
guest # 0 ⇈
нет, не похуй
guest # 0
[email protected] # 0 ⇈
guest # 0 ⇈
Второй умеет выпаршивать тугрики из строк, а первый использует его чтобы из стрима читать
guest # 0
inkanus_gray # 0 ⇈