Por que não usar o ambiente?
export some_multiline_string another_multiline_string
E então você pode acessar essas variáveis dentro do script.
Se eles forem muito grandes e excederem o tamanho máximo de um argumento / envvar ou se combinados eles excederem o tamanho máximo da lista arg + env, você poderá passá-los com pipes:
myscript 3< <(printf %s "$some_multiline_string") \
4< <(printf %s "$another_multiline_string") args
E dentro de myscript
:
IFS= read -rd '' -u3 var1
IFS= read -rd '' -u4 var2
exec 3<&- 4<&-
Ou você poderia passá-los de dentro de um único fluxo, por exemplo, no stdin do script, mas delimitado com NUL (que em bash
não pode ocorrer em uma variável):
printf '%sIFS= read -rd '' var1 && IFS= read -rd '' var2
' "$some_multiline_string" "$another_multiline_string" |
myscript args
E dentro de myscript
:
export some_multiline_string another_multiline_string