Eu tenho um Azure KeyVault que contém um segredo, vamos chamá-lo de "test1".
Eu tenho um pipeline de lançamento do Azure DevOps que executa dois scripts bash. Um embutido, o outro baseado em arquivo.
O script embutido não tem argumento de entrada, pois pode manipular a variável (segredo) do Grupo de Variáveis (que é o Azure Key Vault) sem ele.
O script baseado em arquivo tem uma entrada, que no lado do DevOps é $(test1)
.
No caso de script embutido :
echo "1" $test1
echo "2" test1
echo "3" "$test1"
echo "4" $(test1)
echo "5" ${test1}
echo "6" "$(test1)"
echo "7" "${test1}"
No caso de script baseado em arquivo :
test1=$1
echo "1" $test1
echo "2" test1
echo "3" "$test1"
echo "4" $(test1)
echo "5" ${test1}
echo "6" "$(test1)"
echo "7" "${test1}"
Como você pode ver, os dois scripts são idênticos.
Saída do script embutido:
2024-01-26T09:45:29.0382744Z 1
2024-01-26T09:45:29.0384501Z 2 test1
2024-01-26T09:45:29.0385029Z 3
2024-01-26T09:45:29.0385401Z 4 ***
2024-01-26T09:45:29.0385658Z 5
2024-01-26T09:45:29.0385948Z 6 ***
2024-01-26T09:45:29.0386188Z 7
Saída do script baseado em arquivo:
2024-01-26T09:45:28.6888518Z 1 ***
2024-01-26T09:45:28.6890152Z 2 test1
2024-01-26T09:45:28.6890863Z 3 ***
2024-01-26T09:45:28.7077227Z /d/a/r1/a/_secret/echo.sh: line 6: test1: command not found
2024-01-26T09:45:28.7104148Z 4
2024-01-26T09:45:28.7113476Z 5 ***
2024-01-26T09:45:28.7278287Z /d/a/r1/a/_secret/echo.sh: line 8: test1: command not found
2024-01-26T09:45:28.7287815Z 6
2024-01-26T09:45:28.7289441Z 7 ***
Questões:
- Por que a saída é diferente? Um reconhece a variável desta forma, o outro reconhece a variável de outra forma. Qual é a diferença ou o que estou fazendo de errado?
- Existe a possibilidade de usar um script baseado em arquivo sem argumentos de entrada para os segredos, que vêm do Grupo de Variáveis ou do trabalho do agente "Azure Key Vault".