Se um script não estiver funcionando como esperado, uma das primeiras coisas que você pode tentar é adicionar set -x
antes do ponto problemático no código (nesse caso, antes do grep
) e executando o script. Você então verá o que o script está realmente fazendo, para que você possa compará-lo ao que você espera que ele esteja fazendo.
No seu caso, o problema pode ser que _
é um caractere válido em nomes de variáveis, portanto, você está tentando usar o valor de $string1_from_
em vez de $string1
conforme o esperado. É por isso que é uma boa prática, mesmo que não esteja usando manipulações sofisticadas, incluir seus nomes de variáveis em chaves. Por exemplo:
if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
echo "dicounter_${string1}_from${string2} already exists in MasterFile."
else
[..]