abc=okabcกำหนดค่าให้กับตัวแปร ประกาศตัวแปรที่เรียกว่าdeclare abc ทั้งสองสามารถนำมารวมเป็นabcdeclare 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
อีกสิ่งที่คุณสามารถทำได้กับdeclarebuiltin ก็คือ
declarebuiltin เป็นเอกลักษณ์ทุบตี มันเป็นแรงบันดาลใจอย่างมากและใกล้เคียงกับtypesetbuiltin ของ ksh และ bash typesetเป็นคำพ้องความหมายdeclareสำหรับความเข้ากันได้ (ฉันไม่รู้ว่าทำไมทุบตีไม่เพียงแค่เรียกมันtypeset) มีคำพ้องความหมายที่สาม, local. นอกจากนี้ยังมีexportซึ่งเป็นเหมือนกันdeclare -xอีกครั้งสำหรับความเข้ากันได้ (กับเชลล์สไตล์ Bourne ทุกตัว)
declareให้ NAME เป็นโลคัลเช่นเดียวกับlocalคำสั่ง-gตัวเลือกยับยั้งพฤติกรรมนี้help declareดู