Ho una stringa che è il risultato di un'operazione su cui non ho alcun controllo. Quando stampo questa variabile usando echo
, ottengo:
echo $myvar
hello
Tuttavia, quando lo faccio
if [ $myvar = "hello" ]; then
echo they are equal
else
echo they are not equal
fi
Capisco sempre che non sono uguali. Sospetto che ciò sia dovuto a un newline
personaggio.
Anche la stringa si comporta in modo strano. Quando io faccio:
newVAR="this is my var twice: "$myvar$myvar
echo $newVAR
Ottengo:
hellois my var twice: hello
Come posso verificare se ciò è effettivamente dovuto a newline
e, in tal caso, rimuoverlo?
echo $foo
. Fare echo "$foo"
invece.
printf '%q\n' "$string"
ottenere una versione con escape di qualsiasi stringa. Ad esempio:printf '%q\n' 'foo\n'
->foo\\n
;printf '%q\n' $'foo\n'
->$'foo\n'