ต่อไปนี้เป็นชุดกรณีที่echo $var
สามารถแสดงค่าที่แตกต่างจากที่เพิ่งกำหนดได้ สิ่งนี้จะเกิดขึ้นไม่ว่าค่าที่กำหนดจะเป็น "double quoted" "single quoted" หรือไม่มีเครื่องหมายคำพูด
ฉันจะทำให้เชลล์ตั้งค่าตัวแปรได้อย่างถูกต้องได้อย่างไร
ดอกจัน
ผลลัพธ์ที่คาดหวังคือ/* Foobar is free software */
แต่ฉันได้รับรายชื่อไฟล์แทน:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
วงเล็บเหลี่ยม
ค่าที่คาดหวังคือ[a-z]
แต่บางครั้งฉันก็ได้อักษรตัวเดียวแทน!
$ var=[a-z]
$ echo $var
c
ฟีดบรรทัด (บรรทัดใหม่)
ค่าที่คาดหวังคือรายการของบรรทัดที่แยกจากกัน แต่ค่าทั้งหมดจะอยู่ในบรรทัดเดียวแทน!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
หลายช่องว่าง
ฉันคาดหวังว่าส่วนหัวของตารางจะถูกจัดวางอย่างระมัดระวัง แต่ช่องว่างหลาย ๆ ช่องจะหายไปหรือถูกยุบลงไปแทน!
$ var=" title | count"
$ echo $var
title | count
แท็บ
ฉันคาดหวังค่าที่คั่นสองแท็บ แต่ฉันได้รับค่าที่คั่นด้วยช่องว่างสองค่าแทน!
$ var=$'key\tvalue'
$ echo $var
key value
var=$(cat file)
ดี แต่echo "$var"
เป็นสิ่งจำเป็น