Как сделать *sh строки короче

Системы выезда как OCS. Существуют несколько вокруг, просят у Google "аппаратные материально-технические ресурсы программного обеспечения" или такой. Ремонт чего-то самостоятельно повредится или будет менее, чем безопасен.

7
07.09.2014, 01:39
2 ответа

Вы можете разбивать длинные строки на escaped newlines, т.е. \ сразу за ним следует новая строка:

ls_colors_parsed=${${(@s.:.)LS_COLORS}/(#m)\**=[0-\
9;]#/${${MATCH/(#m)[0-9;]##/$MATCH=$MATCH=04;$MATC\
H}/\*/'=(#b)($PREFIX:t)(?)*'}}

WARNING

Хотя вы можете разбивать строки таким образом почти везде, но есть исключения. Она не будет работать внутри одного цитируемого текста или после \ экранирующей последовательности (\n, \x40, ...). Некоторые другие конструкции оболочки также могут ломаться: Если в вашем примере поставить попытку разбить между ($PREFIX и :t), то она будет работать некорректно.

2
27.01.2020, 20:19

Вы можете сделать что-то вроде:

setopt extendedglob
alias 'verbose{{=read -rd "" -u9 _code 9<<-"}}";\
  eval "${_code//[[:space:]]#$'\''\n'\''[[:space:]]#}"'

verbose{{
  ls_colors_parsed=${
    ${(@s.:.)LS_COLORS}
      /(#m)\**=[0-9;]#
      /${
          ${MATCH
            /(#m)[0-9;]##
            /$MATCH=$MATCH=04;$MATCH
          }
            /\*
            /'=(#b)($PREFIX:t)(?)*'
      }
  }
}}

Новые строки, окруженные пробелами, удаляются перед передачей в eval для интерпретации.

1
27.01.2020, 20:19

Теги

Похожие вопросы