2015-09-25 5 views
3

У меня есть test.sh файл, который содержит что-то вроде следующегоОтображение всех переменных, объявленных в файле ш

source lib.sh 

input=$0 

A=aa/bb/cc 
B=$A/dd 
C=$A/ee 

doSomething $B $C 

Можно ли отображать значения всех переменных, так что, когда я прочитал код , Мне не нужно отслеживать их окончательное значение подряд за строкой.

В моем случае, я имею в виду, чтобы отобразить

input=$0 
A=aa/bb/cc 
B=aa/bb/cc/dd 
C=aa/bb/cc/ee 

Я знаю

bash -x test.sh 

может достичь этой цели; но я не хочу, чтобы test.sh выполнялся. (Выполнение функций в test.sh удалит некоторые важные файлы на моем диске.) Я только хочу знать значения всех переменных.

+0

Вы можете заменить операцию delete на 'echo' или добавить' -i' в 'rm' –

+0

, но файл * .sh, который я читаю, содержит тысячи строк кода. Я не хочу заменять функции один за другим. – Brian

+0

каждая функция отличается? Простое sed кажется простым, или любой редактор может заменить. например, измените 'rm' на' RM' и определите RM в 'rm' или' echo' в верхней части файла –

ответ

1

Концепция «сухой пробег» в bash на самом деле невозможна. Что бы ouptput например в тех случаях, как следующее:

if some_command; then 
    variable=output_1 
else 
    variable=output_2 
fi 

Для определения расхода сценария вы должны выполнить команду some_command, который может потребовать запуск некоторых команд и получать свою продукцию. Это изменит вашу систему (это будет зависеть от команды). Таким образом, нет «безопасного» способа сделать то, что вам нужно, не выполняя сценарий bash.

Для того, чтобы протестировать ваш скрипт, необходимо будет имитировать команды, которые могут изменить вашу систему (добавив echo в начале, например). Таким образом, вы можете запустить скрипт и посмотреть значения для ваших переменных.

Смежные вопросы