Estamos teniendo un rompecabezas muy extraño relacionado con las codificaciones de caracteres y el reemplazo de bash, donde estamos pasando una variable bash a un script rake que se canaliza a una variable bash diferente, y no estoy seguro de qué intentar a continuación. Solo funciona cuando crea la variable sin reemplazar, pero las variables no solo coinciden en cualquier forma en que las crea, sino que incluso sus representaciones binarias coinciden. Estedeberíaexcluya todo lo relacionado con codificaciones incorrectas, terminadores nulos o caracteres no visualizables. Este es uno de los errores más interesantes que he visto al trabajar con cualquier idioma, así que quería compartirlo con la comunidad y ver si alguien tiene alguna idea sobre lo que podría estar pasando aquí. Para más contexto:
RELEASE_CODE=1250
MATCHING=replace
NAME=redactedDeployment-replace-d
Primero, el caso de trabajo en el que el script pasa con el resultado esperado.
# FULLNAME=redactedDeployment-1250-d
# deployments=$(rake find_deployments[$FULLNAME])
# echo $deployments
redactedDeployment-1250-d
# echo $FULLNAME
redactedDeployment-1250-d
# echo $FULLNAME | perl -lpe '$_=join " ", unpack"(B8)*"'
01110010 01100101 01100100 01100001 01100011 01110100 01100101 01100100 01000100 01100101 01110000 01101100 01101111 01111001 01101101 01100101 01101110 01110100 00101101 00110001 00110010 00110101 00110000 00101101 01100100
y
# if [ "${MATCHING,,}" = "replace" ]; then
> FULLNAME=${NAME/replace/$RELEASE_CODE}
> tr -dc '[[:print:]]' <<< "$FULLNAME" #Remove non-printable characters, same result if we remove this line
> else
> FULLNAME=${NAME}-${RELEASE_CODE}
> fi
# deployments=$(rake find_deployments[$FULLNAME])
rake aborted!
Don't know how to build task 'find_deployments[redactedDeployment-1250-d' (See the list of available tasks with `rake --tasks`)
(See full trace by running task with --trace)
# echo $FULLNAME
redactedDeployment-1250-d
# echo $FULLNAME | perl -lpe '$_=join " ", unpack"(B8)*"'
01110010 01100101 01100100 01100001 01100011 01110100 01100101 01100100 01000100 01100101 01110000 01101100 01101111 01111001 01101101 01100101 01101110 01110100 00101101 00110001 00110010 00110101 00110000 00101101 01100100