J'ai une chaîne qui est le résultat d'une opération sur laquelle je n'ai aucun contrôle. Lorsque j'imprime cette variable à l'aide echo
, j'obtiens:
echo $myvar
hello
Cependant, quand je fais
if [ $myvar = "hello" ]; then
echo they are equal
else
echo they are not equal
fi
J'ai toujours l'impression qu'ils ne sont pas égaux. Je soupçonne que c'est à cause d'un newline
personnage.
La chaîne se comporte également étrangement. Quand je fais:
newVAR="this is my var twice: "$myvar$myvar
echo $newVAR
Je reçois:
hellois my var twice: hello
Comment puis-je vérifier si cela est en fait dû à un newline
et, si oui, le supprimer?
echo $foo
. Faites à la echo "$foo"
place.
printf '%q\n' "$string"
obtenir une version échappée de n'importe quelle chaîne. Par exemple:printf '%q\n' 'foo\n'
->foo\\n
;printf '%q\n' $'foo\n'
->$'foo\n'