Не столько ответ, сколько диагностика...
В моей системе, работающейdash
v0.5.8 -2.10 , переменная длина может быть довольно большой, по крайней мере 2^30 символов. Демонстрация путем удвоения длины переменной ${x}
до тех пор, пока ее длина в символах ${#x}
не превысит примерно 25% свободной памяти (, что проверяется специальной функциейfurp
):
Первый запускdash
:
dash
Затем, (внутри dash
), запустите этот код:
furp() { free | { read z; read a b c d; echo $((100*$c/$b)) ; } }
x=1
while [ `furp` -lt 25 ] ; do
x="${x}${x}"; echo ${#x}
done | tail -1
Вывод (в моей системе, может отличаться в зависимости от свободной памяти):
1073741824
Попробуйте поместить код, подобный приведенному выше, в свой сценарий, а затем запустить его в той же systemd
среде и проверить результат.