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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    #!/system/bin/bash
    
    indexOf()
    {
    echo "$1" "$2" | awk '{print index($1,$2)}'
    }
    
    str=$(wget -q -O - http://quote-citation.com/random)
    
    str=${str//\"/} #??????? ???????
    str=${str//\'/}
    
    indexOf "$str" "inner"

    Вот хуй поймёшь что хотели написать в этом коде

    Запостил: blondi, 20 Июня 2017

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

    • А документацию прочитать сначала не дано?

      https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion

      ${parameter/pattern/string}

      The pattern is expanded to produce a pattern just as in filename expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. If pattern begins with ‘/’, all matches of pattern are replaced with string. Normally only the first match is replaced. If pattern begins with ‘#’, it must match at the beginning of the expanded value of parameter. If pattern begins with ‘%’, it must match at the end of the expanded value of parameter. If string is null, matches of pattern are deleted and the / following pattern may be omitted. If the nocasematch shell option (see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. If parameter is ‘@’ or ‘*’, the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with ‘@’ or ‘*’, the substitution operation is applied to each member of the array in turn, and the expansion is the resultant list.
      Ответить
      • Т.е. эти паттерны удаляют все ' и " из текста?
        Ответить
        • Да. А вот реализация indexOf меня смущает.

          https://www.gnu.org/software/gawk/manual/gawk.html#index-index_0028_0029-function
          Ответить
    • Ответить
    • Ну, тут всё довольно идиоматично:
      - в строках 3-6 реализуют прослойку, позволяющую исполнять Яву/скрипт прямо в баше;
      - в строке 8 получают предпросчитанный псевдослучайный документ с удалённого сервера (потому что содержащие нужную информацию документы из локального /dev/random чересчур объёмные, медленно скачиваются, да и вообще вореции требуют много ресурсов);
      - первые 2 байта (! и решётка) отчаянно кричат и напоминают, что баш решето, поэтому в строках 10-11 проводится разэкранирование, дабы кавычки обрабатываемых данных не интерферировали с кавычками исполняемого кода, и не было никаких потенциальных инъекций (это эталонная хорошая практика наравне с использованием в РНР функции мойскл_убежать_строка_нешутошно_на_самом _деле(кококо));
      - в строке 13 элегантно распарсили документ и нашли элемент с искомым контентом; тут хипсторы обычно рвутся заинклюдить ещё пару мегабайтов своих яКверей ради строчки типа $('.quote-text-inner'), но, на минуточку, тогда автору потребовалось бы, в придачу к реализации встраиваемой Явы, потратить ещё несколько строк на объектную модель документа;
      - ???????
      - End.
      Ответить
      • Вставил свой идиоматических размеров псевдослучайный хуец тебе прямо в баш.
        Ответить

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