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 newlinepersonaggio.
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 newlinee, 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'