Mam ciąg będący wynikiem operacji, nad którą nie mam kontroli. Kiedy drukuję tę zmienną za pomocą echo, otrzymuję:
echo $myvar
hello
Jednak kiedy to zrobię
if [ $myvar = "hello" ]; then
echo they are equal
else
echo they are not equal
fi
Zawsze rozumiem, że nie są równi. Podejrzewam, że dzieje się tak z powodu newlinepostaci.
Sznurek zachowuje się również dziwnie. Kiedy robię:
newVAR="this is my var twice: "$myvar$myvar
echo $newVAR
Dostaję:
hellois my var twice: hello
Jak mogę sprawdzić, czy jest to faktycznie spowodowane, newlinea jeśli tak, to go usunąć?
echo $foo. Rób echo "$foo"zamiast tego.
printf '%q\n' "$string"uzyskać ucieczkową wersję dowolnego łańcucha. Na przykład:printf '%q\n' 'foo\n'->foo\\n;printf '%q\n' $'foo\n'->$'foo\n'