FAQ Pseudo-debugowanie skryptu Bash

Discussion in 'Oh'Linux? Software hacking' started by Silas Mariusz, Jul 31, 2015.

Loading...
  1. Silas Mariusz
    Online

    Silas Mariusz SysOp Administrator

    Joined:
    Apr 5, 2008
    Messages:
    7,826
    Local Time:
    8:40 AM
    Ratings:
    +1,669 / 34 / -7
    Followers:
    32
    QNAP:
    TS-x77
    Ethernet:
    1 GbE
    TS-x77 1 GbE
    1. Eksportujemy zmienną globalną PS4, która będzie odpowiedzialna za kwestie wizualną:
      Code (Bash):
      1. export PS4="\e[0;33m+\e[0;36m"'(${BASH_SOURCE##*/}:\e[0;35m${LINENO}'"\e[0;31m\e[0;37m) "
    2. Aby uruchomić skrypt bash z włączonym debugowaniem, wykonaj następujące:
      • Wersja interaktywna:
        Code (Bash):
        1. sh -c '_p="/etc/init.d/nvrd.sh" && read -p "Script path [${_p}]: " _t; [ -z "$_t" ] && _t=$_p; (set -x; date ; . $_t) | tee -a /share/Public/trace_run.out'
      • Wersja nieinteraktywna, w której na początku deklarujemy komendę lub ścieżkę do pliku .sh:
        Code (Bash):
        1. _t="/etc/init.d/nvrd.sh.stop"       # tu nalezy podac sciezke lub polecenie shell
        2. _l=/share/Public/trace_run.out      # sciezka do pliku logowania
        3.  
        4. sh -c "set -x; date >> \"$_l\" ; . $_t 2>&1 | tee \"${_l}.tmp\"; sed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g' \"${_l}.tmp\" > \"$_l\""
    Efekt:
    upload_2015-7-31_0-49-34.