Являются ли эти сценарии-обертки очень сложными, или только один вкладыш?
Возможно, можно запустить set -xv
, а затем запустить сценарий оболочки с bash -n
. Это не выполнит команду, но выведет то, что должно быть выполнено, что я предполагаю, вероятно, последняя строка.
Затем вы можете взять фактически выполненную команду и добавить к ней свои собственные данные. Это включает в себя обертку сценария оболочки.
Им нужно изменить скрипт-обертку и сделать их более гибкими. Я не возражаю против значений по умолчанию, но позволяю им перезаписываться параметрами командной строки. Например, по умолчанию может быть:
somescript -f foo -b bar -u uff
Однако, если бы я сделал это
somescript -f fufu
Сценарий будет выполнен:
somescript -f fufu -b bar -u uff
Это можно легко сделать, создав оболочку Perl и используя Getopt :: Long . Быстрая и грязная реализация может выглядеть так:
use GetOpt::Long;
# Default Values for Paremters
my $foo = bar
my $bar = foo
my $fubar; #No default, but valid parameter
GetOptions (
"foo:s" => \$foo,
"bar:s => \$bar,
"fubar:s" => \$fubar,
) or die qq($USAGE\n);
if (defined $fubar) {
$fubar = "-fubar $fubar";
}
system qq(mycommand -foo $foo -bar $bar $fubar);
Не на 100% это правильный код, но вы должны понять.
Идея заключается в том, что вам необходимо соблюдать осторожность при использовании дополнительных параметров, таких как -fubar
Выше я комбинирую $fubar
с параметром и значением, если есть параметр $fubar
. Другим вариантом является использование хеша для хранения параметров (возможно с GetOptions), а затем построение параметра командной строки через хеш.
В любом случае, не так сложно сделать обертки более гибкими и обеспечить как желаемые значения по умолчанию, так и возможность отмены этих значений по умолчанию.