2015-10-10 2 views
2

У меня есть сценарий, который выполняет программу и направляет вывод в файл журнала.Можно ли запустить исполняемую команду в скрипте с помощью bash?

./a.out --option 1 > log.txt 
./a.out --option 2 >> log.txt 
... 

Я хотел бы направить исполненные командные строки ( "./a.out --option 1", "./a.out --option 1", ...) в том же журнале файл, чтобы я мог различать, какой вывод для этой команды. Возможно ли это? Я мог бы добавить команду «echo», но это не кажется хорошим способом сделать это, так как я должен написать одну и ту же строку дважды и, возможно, сделать ошибку.

Это кажется тривиальным, но я не мог найти на Google или аналогичный quesition :(поэтому, пожалуйста, позвольте мне спросить здесь Заранее спасибо

ответ

2

Вы можете создать функцию:.!

my_command() { 
    { echo "Option $1"; ./a.out --option "$1"; } >> log.txt 
} 

my_command 1 
my_command 2 

Если вы хотите сохранить всю командную строку, вы можете использовать переменную:

my_command() { 
    local cmd="./a.out --option $1" 
    { echo "$cmd"; $cmd; } >> log.txt 
} 

my_command 1 
my_command 2 
+0

[Не хранить команды в переменных!] (Http://mywiki.wooledge.org/BashFAQ/050). –

+0

@gniourf_gniourf Ни один из ответов в этом FAQ не касается этого варианта использования. – melpomene

+0

'cmd =" ​​./ a.out --option $ 1 "': вы вводите команду в переменную. Как не часто задаваемые вопросы об этом? –

0

вы можете поместить команды в последовательности, например:

(cmd1 ; cmd2 ; cmdn) > file