En bash
, los nombres de variables solo pueden estar formados por caracteres alfanuméricos de un solo -byte o guión bajo (y el primer carácter no puede ser un dígito ).
Entonces, www.example.com_token
no es un nombre de variable válido, www.example.com_token="asdfasdf"
no se reconoce como una asignación sino como un comando simple.
En ksh93 (el shell bash
intenta emular ), www.example.com_token="asdfasdf"
funcionaría solo si definiera la variable www
como una variable compuesta :
$ compound www
$ www.example.com_token="asdfasdf"
$ typeset -p www
typeset -C www=(example=(com_token=asdfasdf))
$ printf '%s\n' "${www.example.com_token}"
asdfasdf
En bash
, posiblemente podría usar una variable de matriz asociativa (una de esas características ksh93 copiadas porbash
):
typeset -A token
token[www.example.com]=asdfasdf
printf '%s\n' "${token[www.example.com]}"
(esa sintaxis también debería funcionar en ksh93
yzsh
).
Si no puede modificar eso config.txt
para que sea compatible con la sintaxis de su shell, posiblemente podría editarlo sobre la marcha antes de evaluarlo. Como (con ksh93
, bash
ozsh
):
typeset -A token
. <(sed 's/^\([^=]*\)_token=/token[\1]=/' < config.txt)
Para transformar el x.y_token=
a token[x.y]=
o:
. <(sed -e :1 -e 's/^\([^=]*\)\.\(.*=\)/\1_\2/; t1' < config.txt)
Para reemplazar cada .
a la izquierda del =
con _
.
Pero tenga cuidado, cualquiera de esos podría hacer reemplazos en lugares donde no se esperan como en:
foo.bar_token="multi
line.x. _token assignment (=)"
O si el expediente no contiene únicamente asignaciones.
Ahora, si ese config.txt
en realidad no contiene la sintaxis de shell adecuada,desea buscar otros problemas de sintaxis como líneas que contienen foo="price: $12"
o foo="x `y' z"
donde esos $
, `
son operadores especiales en la sintaxis de Shell.
Эта строка вызывает проблемы:
RUN apt-get install -y build-essential:armhf
Вам не нужно build-essential:armhf
для кросс-компиляции -. Вы должны удалить это; docker build
должен без проблем собрать контейнер.
Похоже, есть некоторые зависимости, которые невозможно установить. Что именно сказать сложно.
К сожалению, вывод apt
не очень полезен, когда он сталкивается с проблемой, которую не может решить. Однако вы можете уговорить его выдать больше вывода, указав -o Debug::pkgProblemResolver=yes
в командной строке apt. это должно дать вам более подробную информацию о том, что он пытается сделать, и, надеюсь, позволит вам это исправить.
Если это не помогло, запустите apt с этой опцией и опубликуйте результат.