ความแตกต่างระหว่างการประกาศและเรียงพิมพ์คืออะไร


22

ทุกคนสามารถอธิบายความแตกต่างระหว่างการประกาศและเรียงพิมพ์พร้อมตัวอย่างชีวิตจริงได้ไหม

คำตอบ:


27

ในbash, typesetและdeclareจะตรงเดียวกัน ข้อแตกต่างtypesetคือถือว่าล้าสมัย

typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
    Set variable values and attributes.

    Obsolete.  See `help declare'.

man page แสดงรายการในลมหายใจเดียวกัน:

declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
    Declare variables and/or give them attributes.

typesetเป็นแบบพกพาหอยอื่น ๆ ksh93ยกตัวอย่างเช่น หากคุณต้องการพกพาข้ามเชลล์ให้ใช้typeset(และตรวจสอบให้แน่ใจว่าวิธีที่คุณโทรหาเป็นแบบพกพา) declareหากคุณไม่สนใจเกี่ยวกับการพกพาเช่นการใช้งาน


คุณสามารถโปรดให้ตัวอย่างของบางที่ไหนและทำไมการใช้งานนี้ในสคริปต์ทุบตี
ราหุล Patil

1
... อย่างที่ฉันพูดพวกเขาเหมือนกันทุกประการ ฉันไม่เข้าใจว่าฉันสามารถแยกแยะความแตกต่างได้อย่างไร
Chris Down

2
สิ่งที่ดี. โปรดทราบว่า "ล้าสมัย" เพียงแค่ปรากฏในไม่ได้อยู่ในhelp typeset man typeset
fedorqui

2
@ChrisDown คุณจะไม่เกิดขึ้นรู้ว่าทำไมtypesetถูกพิจารณาว่าล้าสมัยหรือไม่?
Alexej Magura

3

ฉันรู้กรณีที่declareมีประโยชน์ในการหลีกเลี่ยงความชั่วeval: ตัวแปรทางอ้อม :

$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value

นี่เป็นความคิดเห็นที่ดี แต่จะตอบคำถามที่เกี่ยวกับtypesetและdeclareอย่างไร
jw013

นี่คือคำตอบที่ดีโดย Chris Down คำตอบของฉันเป็นเพียงกรณีที่มันมีประโยชน์
Gilles Quenot

บางทีฉันไม่ชัดเจน ความคิดเห็นควรเป็นความคิดเห็นและคำตอบควรเป็นคำตอบ นี่คือความคิดเห็นไม่ใช่คำตอบ
jw013

3
ตัวอย่างของฉันไม่ชัดเจนในความคิดเห็น
Gilles Quenot

แต่คุณยังสามารถกำหนดตัวแปรด้วยเรียงพิมพ์ ... เพียงแค่แทนที่ประกาศด้วยเรียงพิมพ์และคุณยังคงได้รับผลลัพธ์เดียวกัน
pcarvalho
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.