Beri bash i ebash / Говнокод #3488 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
#!/bin/bash

# ...
PWD=`pwd`
cd $OTHERDIR
# ...
cd $PWD

скрипт был написан навороченым солярис инженером. я ожидал каких-там BSD или SysV выкрутасов, а как увидел в начале /bin/bash начал уже сомневатся. парой десятков строк ниже нашел данный перл, и дальше вчитатываться не стал - все надо в ж переписывать....

ЗЫ $PWD это встроеная переменная которая устанавливается коммандой cd. ее можно руками менять, но по каждому cd она будет всегда в полный путь текущего каталога ставится. Другими словами PWD=`pwd` как и cd $PWD есть просто NOPы.

Запостил: Dummy00001 Dummy00001, (Updated )

Комментарии (12) RSS

    • "cd $PWD" - очень даже говнокод, и раньше лично я такого ГК не видел.
      Ответить
  • Assignments to this variable may be ignored. If an application sets or unsets the value of PWD , the behaviors of the cd and pwd utilities are unspecified.

    Впрочем, это стандарт. Как в баше, лень смотреть.
    Так что не совсем NOP:)
    Ответить
    • я описал как оно в баше - я ман проверил т.к. честно говоря ожидал что он ругнется на это. $PWD и $OLDPWD они ставятся внутри cd - и само собой разумеется pushd/popd. если гавно какое туда записать, пока cd не сделаешь, там это говно и останется.

      к слову автор скрипта как раз и наговнокодил потому что про pushd/popd не знал.
      Ответить
      • Мне кажется, наговнокодил потому, что не знал про то, что PWD зарезервирована, в остальном же, название - первый кандидат на переменную для этого. Если чувак олдовый, то это стандартный способ заныкать значение пути, а потом туда перейти. В отсутствие баша, я бы так и написал (только имя переменной бы другое дал).
        Как по мне, так это создатели стандарта лучше бы делали внутренние переменные с подчерком, по аналогии с C.
        Ответить
        • шелскрипты и так пестрят всякими скобочками, решётками и прочим, ещё и _ туда пихать - вообще ужас будет. Надо просто ничего большого на баше не писать.
          Ответить
          • Как это, не писать?
            А на чем же тогда писать? Вот, взять тот же перл, уж там птичьего языка хватает, ан, пишут большие прогграммы, и даже, не побоюсь этого слова, проекты!
            Ответить
          • Я бы сказал так: "если стоит #!/bin/bash - значит есть настолько же, насколько и баш":)
            Ответить
  • На что только люди не пойдут, лишь бы встроенные переменные не пользовать.
    А что , "$PWD" - нормальное название для сохранения пути?
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8