私が制御できない何らかの操作の結果である文字列があります。を使用してこの変数を出力するとecho、次のようになります。
echo $myvar
hello
しかし、私がするとき
if [ $myvar = "hello" ]; then
echo they are equal
else
echo they are not equal
fi
それらが等しくないことは常にわかります。これはnewlineキャラクターのせいだと思います。
文字列も奇妙に動作します。私がする時:
newVAR="this is my var twice: "$myvar$myvar
echo $newVAR
私は得ます:
hellois my var twice: hello
これが原因であるかどうかを確認し、原因newlineである場合は削除するにはどうすればよいですか?
echo $foo。echo "$foo"代わりにしてください。
printf '%q\n' "$string"、任意の文字列のエスケープバージョンを取得できます。例:printf '%q\n' 'foo\n'->foo\\n;printf '%q\n' $'foo\n'->$'foo\n'