Quebra-cabeça da semana

Quebra-cabeça da semana

Estamos tendo um quebra-cabeça muito estranho relacionado à codificação de caracteres e substituição do bash, onde estamos passando uma variável bash para um script rake que é canalizado para uma variável bash diferente, e não tenho certeza do que tentar a seguir. Ele só funciona quando você cria a variável de maneira sem substituição, mas não apenas as variáveis ​​​​correspondem de qualquer maneira que você as criou, mas até mesmo suas representações binárias correspondem. Essedeveexclua qualquer coisa relacionada a codificações incorretas, terminadores nulos ou caracteres não exibíveis. Este é um dos bugs mais interessantes que já vi trabalhando com qualquer linguagem, então queria compartilhar com a comunidade e ver se alguém tem alguma ideia do que poderia estar acontecendo aqui. Para mais contexto:

RELEASE_CODE=1250
MATCHING=replace
NAME=redactedDeployment-replace-d

Primeiro, o caso de trabalho em que o script passa com o 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

e

# 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

informação relacionada