$é um caractere especial no bash que pode ser usado para expandir parâmetros como variáveis ou parâmetros especiais como seu arquivo $?. Se você quiser usá-lo em uma string com aspas duplas, precisará escapá-lo com um\
$ [ "\$a" != "\$b" ]
$ echo "$?"
0
Ou use aspas simples (dentro das quais nenhum caractere é tratado de forma especial) em vez de aspas duplas:
Como a expressão de teste usa $ae $bentre aspas duplas, o shell as interpretará como variáveis e as substituirá por seus valores.
Em seu código, a variável ae bprovavelmente não está definida. Isso significa que $ae $bserá o mesmo valor (a string vazia). O "$a" != "$b"teste será, portanto, falso (1).
Se você quiser comparar as strings$a e $b, use, por exemplo, aspas simples em vez de aspas duplas:
$
é um caractere especial no bash que pode ser usado para expandir parâmetros como variáveis ou parâmetros especiais como seu arquivo$?
. Se você quiser usá-lo em uma string com aspas duplas, precisará escapá-lo com um\
Ou use aspas simples (dentro das quais nenhum caractere é tratado de forma especial) em vez de aspas duplas:
Como a expressão de teste usa
$a
e$b
entre aspas duplas, o shell as interpretará como variáveis e as substituirá por seus valores.Em seu código, a variável
a
eb
provavelmente não está definida. Isso significa que$a
e$b
será o mesmo valor (a string vazia). O"$a" != "$b"
teste será, portanto, falso (1).Se você quiser comparar as strings
$a
e$b
, use, por exemplo, aspas simples em vez de aspas duplas:Isso protegerá as strings da expansão variável.