Назад | Перейти на главную страницу

Вызовите команду script и выйдите из нее из сценария bash

Я использую команду linux 'script' http://www.linuxcommand.org/man_pages/script1.html для регистрации всего ввода и вывода в интерактивном сценарии bash.

Сейчас мне нужно позвонить в script команду, затем запустите мой сценарий bash, затем exit.

Я хочу запустить script и exit команды из самого сценария bash. Как я могу это сделать?

я пробовал script -a но это не работает для интерактивных скриптов.

Будем очень благодарны любой помощи.

"script" разветвляет оболочку (или команду, указанную с помощью "-c"), поэтому я не думаю, что вы можете вызвать "script" из сценария, который вы хотите "script".

Возьмем этот (раздражающий) интерактивный сценарий оболочки (называемый «fred»):

#!/bin/bash

while read -p 'Pete and Repeat were on a boat. Pete jumped off. Who was left? ' WHO
do
        :
done

Запустите его и "запишите" взаимодействие с файлом:

[myles@marklar ~]$ script -c ~/fred fred.log
Script started, file is fred.log
Pete and Repeat were on a boat. Pete jumped off. Who was left? Repeat
Pete and Repeat were on a boat. Pete jumped off. Who was left? Repeat
Pete and Repeat were on a boat. Pete jumped off. Who was left? Repeat
Pete and Repeat were on a boat. Pete jumped off. Who was left? Script done, file is fred.log

Файл журнала содержит:

[myles@marklar ~]$ cat fred.log
Script started on Mon 12 Nov 2012 11:44:41 PM EST
Pete and Repeat were on a boat. Pete jumped off. Who was left? Repeat
Pete and Repeat were on a boat. Pete jumped off. Who was left? Repeat
Pete and Repeat were on a boat. Pete jumped off. Who was left? Repeat
Pete and Repeat were on a boat. Pete jumped off. Who was left?
Script done on Mon 12 Nov 2012 11:44:51 PM EST

Короче говоря, насколько мне известно, вам придется вызывать свой интерактивный сценарий оболочки с помощью команды "script".

Вы можете тривиально перенаправить весь вывод вашего скрипта в файл, используя следующую конструкцию:

exec &> /your/script.log

Кроме того, bash позволяет вам регистрировать все выполняемые им команды, весь получаемый ввод и все расширения, которые он выполняет, когда вы добавляете следующее:

set -x

Если это первые две строки вашего скрипта, все, что делает скрипт, будет регистрироваться.