私が制御できない何らかの操作の結果である文字列があります。を使用してこの変数を出力すると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'