ฉันมีสตริงที่เป็นผลมาจากการดำเนินการบางอย่างที่ฉันไม่สามารถควบคุมได้ เมื่อฉันพิมพ์ตัวแปรนี้โดยใช้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
ฉันจะตรวจสอบได้อย่างไรว่านี่เป็นเรื่องจริงเนื่องจาก a newline
และถ้าใช่ให้ลบออก
echo $foo
ที่คุณจะไม่เห็นด้วย ทำecho "$foo"
แทน
printf '%q\n' "$string"
รับสายอักขระรุ่นใดก็ได้ ตัวอย่างเช่น:printf '%q\n' 'foo\n'
->foo\\n
;printf '%q\n' $'foo\n'
->$'foo\n'