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 newline
postaci.
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, newline
a 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'