Почему бы не использовать среду?
export some_multiline_string another_multiline_string
А затем вы можете получить доступ к этим переменным из сценария.
Если они могут быть очень большими и превышать максимальный размер аргумента / envvar, или если вместе они превышают максимальный размер списка arg + env, то вы можете передать их с конвейерами:
myscript 3< <(printf %s "$some_multiline_string") \
4< <(printf %s "$another_multiline_string") args
И в пределах myscript
:
IFS= read -rd '' -u3 var1
IFS= read -rd '' -u4 var2
exec 3<&- 4<&-
Или вы можете передать их из одного потока, например, в stdin сценария, но с разделением NUL (что в bash
не может встречаться в переменной):
printf '%s\0' "$some_multiline_string" "$another_multiline_string" |
myscript args
И внутри myscript
:
IFS= read -rd '' var1 && IFS= read -rd '' var2