abc=ok
abc
กำหนดค่าให้กับตัวแปร ประกาศตัวแปรที่เรียกว่าdeclare abc
ทั้งสองสามารถนำมารวมเป็นabc
declare abc=ok
ใน bash เช่นเชลล์อื่น ๆ ไม่จำเป็นต้องประกาศตัวแปรสตริงและอาร์เรย์ดังนั้นจึงdeclare
ไม่จำเป็นเว้นแต่คุณจะต้องการส่งตัวเลือกเช่นdeclare -A abc
สร้างabc
อาเรย์แบบเชื่อมโยงหรือdeclare -r
สร้างตัวแปรแบบอ่านอย่างเดียว อย่างไรก็ตามภายในฟังก์ชั่นdeclare
จะสร้างความแตกต่าง: มันทำให้ตัวแปรเป็นท้องถิ่นของฟังก์ชั่นซึ่งหมายความว่าค่าของตัวแปรนอกฟังก์ชั่น (ถ้ามี) จะถูกเก็บไว้ (ยกเว้นว่าคุณใช้declare -g
ซึ่งทำให้ตัวแปรไม่ใช่แบบโลคอลสิ่งนี้มีประโยชน์เมื่อรวมกับตัวเลือกอื่น ๆ เช่นdeclare -gA
เพื่อสร้างอาเรย์ส่วนกลางแบบเชื่อมโยงในฟังก์ชัน) ตัวอย่าง:
f () {
declare a
a='a in f'
b='b in f'
echo "From f: a is $a"
echo "From f: b is $b"
}
a='Initial a'
b='Initial b'
f
echo "After f: a is $a"
echo "After f: b is $b"
เอาท์พุท:
From f: a is a in f
From f: b is b in f
After f: a is Initial a
After f: b is b in f
อีกสิ่งที่คุณสามารถทำได้กับdeclare
builtin ก็คือ
declare
builtin เป็นเอกลักษณ์ทุบตี มันเป็นแรงบันดาลใจอย่างมากและใกล้เคียงกับtypeset
builtin ของ ksh และ bash typeset
เป็นคำพ้องความหมายdeclare
สำหรับความเข้ากันได้ (ฉันไม่รู้ว่าทำไมทุบตีไม่เพียงแค่เรียกมันtypeset
) มีคำพ้องความหมายที่สาม, local
. นอกจากนี้ยังมีexport
ซึ่งเป็นเหมือนกันdeclare -x
อีกครั้งสำหรับความเข้ากันได้ (กับเชลล์สไตล์ Bourne ทุกตัว)
declare
ให้ NAME เป็นโลคัลเช่นเดียวกับlocal
คำสั่ง-g
ตัวเลือกยับยั้งพฤติกรรมนี้help declare
ดู