У меня есть скрипт bash, где я пытаюсь передать аргументы в стиле posix с кавычками в другой скрипт, вызываемый внутри. В командной строке я мог бы набрать:
somescript --foo="bar baz"
Это означает, что для аргумента, имеющего ключ foo
, значение равно bar baz
. В некотором сценарии вы можете подумать, что это сработает:
innerscript "$@"
Однако это приводит к повторной кавычке полноты каждого аргумента, причем ключ и значение объединяются вместе, а не только в значение. Таким образом, innerscript получает "--foo=bar baz"
и считает, что вы пытаетесь передать ключ с именем foo=bar baz
с пустым значением .
Недостаточно сказать bash «перецитировать все переданные аргументы». Мне нужно сказать bash «перецитировать все переданные в аргументах точно так, как они были процитированы до ». Не меняйте положение моих цитат, братан!