1

Как новичку (Debian) в Linux, мне было интересно, есть ли способ отследить выполнение скрипта bash shell (.sh)? Как и в Windows, вы запускаете это с помощью команды echo on в командном файле.

Мой первый скрипт 'unix', но мне интересно, будет ли он работать так, как ожидалось:

#!/bin/bash  
# switch maintenance mode off and go live with your ownCloud  
occpath='/var/www/owncloud'  
htuser='www-data'  
alias occ-do=sudo -u $htuser php $occpath/occ  
echo info: Switching to live-mode ..  
occ-do maintenance:mode --on`  

строка, которую я пытаюсь создать, похожа на sudo -u www-data php /var/www/owncloud/occ (occ - то, что должно выполняться, давайте предположим, что мне не нужен путь для части php ).

Будет ли это работать; какие-либо ошибки в синтаксисе? И давайте не будем забывать мой вопрос о казни следующего ..

3 ответа3

1

Есть ли способ отследить выполнение скрипта bash shell (.sh)?

Вы можете использовать set -x , set +x и set -v как описано ниже.

  • set -x : отображать команды и их аргументы по мере их выполнения.
  • set +x : отключить отладку
  • set -v : отображать строки ввода оболочки по мере их чтения.

Как: Отладка сценария оболочки под Linux или UNIX

1. Используйте параметр -x для отладки сценария оболочки

Запустите сценарий оболочки с параметром -x.

$ bash -x script-name
$ bash -x domains.sh

2. Использование встроенной команды set

Оболочка Bash предлагает параметры отладки, которые можно включить или отключить с помощью команды set.

  • set -x: отображать команды и их аргументы по мере их выполнения.
  • set -v: отображать строки ввода оболочки по мере их чтения.

Вы можете использовать две вышеупомянутые команды в самом сценарии оболочки:

#!/bin/bash
clear
# turn on debug mode
set -x
for f in *
do
   file $f
done
# turn OFF debug mode
set +x
ls
# more commands

Вы можете заменить стандартную линию Shebang:

#!/bin/bash

со следующим (для отладки) кодом:

#!/bin/bash -xv

Source HowTo: отладка сценария оболочки под Linux или UNIX


Дальнейшее чтение

0

Положил

set -x

в точке, где вы хотите, чтобы отладочная информация начала показывать

set +x

где вы хотите это. Я не обещаю, что то, что вы видите, всегда будет простым, но через некоторое время вы сможете привыкнуть к ид.

0

Это простой способ проверить синтаксис ваших сценариев оболочки:

https://www.shellcheck.net/

Здесь, на этом веб-сайте, интерактивная проверка синтаксиса отмечает строку и отображает ошибку, вызванную неправильным синтаксисом.

Согласно предложению из других ответов, вы можете попробовать set -x & set +x чтобы включить и отключить режим отладки соответственно для отслеживания выполнения скрипта.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .