Потяните определенную строку со страницы руководства для данного кода выхода с помощью bash - PullRequest
0 голосов
/ 04 октября 2011

Я бы хотел вернуть определенную строку из раздела EXIT CODE man-страницы, учитывая действительный код выхода.

Например, если я запускаю curl в скрипте и он возвращает код выхода 2, я бы хотел вернуть строку со страницы man curl:

      2      Failed to initialize.

До сих пор я пытался передать вывод man curl в grep следующим образом:

Предполагая $RETCODE=${?} после выполнения команды curl ...

lewis@hostname:~$ man curl | grep "${RETCODE}"
    http://www.letters.com/file[a-z:2].txt
          in the format "NAME1=VALUE1; NAME2=VALUE2".
          out to be in text mode for win32 systems.
          from outputting that and return error 22.
          re-use the same IP address it already uses for the control connection. (Added in 7.14.2)
...
...

Но это поднимает тонну другого текста с номером. Учитывая, что раздел кода выхода имеет отступ, я попытался

lewis@hostname:~$ man curl | grep "       ${RETCODE}"
         2) On windows, if there is no _curlrc file in the home  dir,  it
  2      Failed to initialize.
         227-line.
  21     FTP quote error. A quote command returned error from the server.
...

И, как вы видите, мы близки. Текст, который мне нужен, есть, но он все равно возвращает неверные результаты.

Обратите внимание, что для кодов выхода с двумя или более цифрами пробел справа от номера на страницах руководства уменьшается.

Ответы [ 3 ]

2 голосов
/ 04 октября 2011

$ man curl | sed -n -e '/^E..X..I..T/,/^A..U..T..H/!d' -e '/ 2 /p'
2 голосов
/ 04 октября 2011

Попробуйте это:

 man curl | grep -E "^\s+${RETCODE}\s+" 
1 голос
/ 04 октября 2011

Попробуйте:

man curl | egrep " {7}${RETCODE} +\S+"
...