1. bash / Говнокод #3488

    −136

    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, 16 Июня 2010

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

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