2014-02-14 4 views
0

У меня есть сценарий, который создает случайные параметры командной строки для второго скрипта. Затем я сохраняю вывод второй в файл. Как включить параметры командной строки, используемые во втором скрипте вместе с результатом, который он производит? Приведенная ниже команда сохраняет только выходной сигнал:Bash - сохранить параметры командной строки в outfile

./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >output.log 2>&1 

Результат длинный, например. 12993943999193949399

Как добавить в верхнюю часть файла полную командную строку?

ответ

1

Вы можете сначала сохранить командную строку, а затем добавить выход.

echo "./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114" >output.log 
./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >>output.log 2>&1 
1

Вы можете создать функцию для этого:

log() { 
    echo "$*" >> output.log 
    "[email protected]" >> output.log 2>&1 
} 

log ./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 

"$*" создать единую строку всех аргументов log в то время как "[email protected]" создает один правильно процитировал строку в аргументе log (т.е. log cmd "a b" c бы назвать cmd с два аргумента вместо трех).

В качестве альтернативы вы можете играть с set -x и exec для перенаправления stdout, но я никогда не могу вспомнить точный синтаксис, поэтому решение выше Better (TM).

0

Если у Вас был свой сценарий generator.sh, что «эхо» что-то, вы можете сделать:

./generator.sh | cat - output.log > temp && mv temp output.log 

Этот вывод перед именем генератора в файле output.log

Это может быть дорогим, если yor файл довольно большой .. так что вы также можете использовать команду sed.

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