คำถามติดแท็ก assignment

2
จำเป็นต้องใช้เครื่องหมายคำพูดสำหรับการกำหนดตัวแปรท้องถิ่นหรือไม่?
ฉันสามารถละเว้นการเสนอราคาทางด้านขวาของการมอบหมายงานท้องถิ่นได้อย่างปลอดภัยหรือไม่? function foo { local myvar=${bar} stuff() } ฉันสนใจเป็นหลักbashแต่ข้อมูลใด ๆ ในกรณีมุมในเปลือกหอยอื่น ๆ ยินดีต้อนรับ


3
การมอบหมายแบบมีเงื่อนไขขึ้นอยู่กับตัวแปรสภาพแวดล้อม
ในสคริปต์ทุบตีฉันกำลังกำหนดตัวแปรโลคัลเพื่อให้ค่าขึ้นอยู่กับตัวแปรสภาพแวดล้อมโกลบอล ( $MYAPP_ENV) if [ "$MYAPP_ENV" == "PROD" ] then SERVER_LOGIN=foobar123@prod.example.com else SERVER_LOGIN=foobar987@test.example.com fi มีวิธีที่สั้นกว่า (ยังสะอาด) ในการเขียนการบ้านข้างต้นหรือไม่? (สมมุติว่าใช้ตัวดำเนินการตามเงื่อนไข / แบบอินไลน์บางอย่างถ้า)

2
การมอบหมายเป็นเหมือนคำสั่งที่มีสถานะการออกยกเว้นเมื่อมีการทดแทนคำสั่ง?
ดูตัวอย่างต่อไปนี้และผลลัพธ์ใน POSIX เชลล์: false;echo $?หรือfalse || echo 1:1 false;foo="bar";echo $?หรือfoo="bar" && echo 0:0 foo=$(false);echo $?หรือfoo=$(false) || echo 1:1 foo=$(true);echo $?หรือfoo=$(true) && echo 0:0 ตามที่ระบุไว้โดยคำตอบที่ได้รับการโหวตสูงสุดที่/programming/6834487/what-is-the-variable-in-shell-scripting : $? ถูกใช้เพื่อค้นหาค่าส่งคืนของคำสั่งที่เรียกใช้งานครั้งสุดท้าย นี่อาจเป็นความเข้าใจผิดเล็กน้อยในกรณีนี้ดังนั้นขอนิยาม POSIX ซึ่งอ้างถึงในโพสต์จากกระทู้นั้น: ? ขยายเป็นสถานะทางออกทศนิยมของไปป์ไลน์ล่าสุด (ดูที่ Pipelines) ดังนั้นดูเหมือนว่าการมอบหมายตัวเองนับเป็นคำสั่ง (หรือมากกว่าส่วนท่อ) ที่มีค่าศูนย์ทางออก แต่จะใช้ก่อนที่ด้านขวาของการมอบหมาย (เช่นการทดแทนคำสั่งเรียกในตัวอย่างของฉันที่นี่) ฉันเห็นว่าพฤติกรรมนี้เหมาะสมจากมุมมองเชิงปฏิบัติ แต่ดูเหมือนว่าฉันค่อนข้างผิดปกติที่งานมอบหมายจะนับตามลำดับนั้น อาจจะชัดเจนมากกว่านี้ทำไมมันแปลกสำหรับฉันลองสมมติว่าการบ้านเป็นหน้าที่: ASSIGNMENT( VARIABLE, VALUE ) แล้วfoo="bar"จะเป็น ASSIGNMENT( "foo", "bar" …

1
การวิเคราะห์คำศัพท์สำหรับการมอบหมายในเชลล์ POSIX
สำหรับการวิเคราะห์คำศัพท์ในเชลล์ POSIX จาก http://pubs.opengroup.org/onlinepubs/007904875/utilities/xcu_chap02.html 7. [การกำหนดชื่อคำสั่งก่อนหน้า] [เมื่อคำแรก] หากโทเค็นไม่มีอักขระ '=' กฎ 1 จะถูกนำไปใช้ มิฉะนั้นจะต้องใช้ 7b ข [ไม่ใช่คำแรก] หากโทเค็นมีอักขระ: - ถ้ามันเริ่มต้นด้วย '=' โทเค็นคำจะถูกส่งกลับ - หากตัวละครทั้งหมดที่อยู่ก่อนหน้า '=' เป็นชื่อที่ถูกต้อง (ดูที่ XBD มาตรา 3.231) โทเค็น ASSIGNMENT_WORD จะถูกส่งกลับ (อักขระที่ยกมาไม่สามารถมีส่วนร่วมในการสร้างชื่อที่ถูกต้อง) - ไม่เช่นนั้นจะไม่ระบุว่าเป็น ASSIGNMENT_WORD หรือ WORD ที่ส่งคืน การมอบหมายให้ NAME จะเกิดขึ้นตามที่ระบุไว้ในส่วน 2.9.1 'คำแรก' หมายถึงอะไร? กรณีใดคือ 'เมื่อคำแรก' กรณีใด 'ไม่ใช่คำแรก' 'เมื่อคำแรก' …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.