การตั้งค่าตัวแปรเชลล์ในแบบรวมศูนย์เป็นโมฆะ


20

ฉันชอบ "null coalescing" จริง ๆ ซึ่งคุณสามารถตั้งค่าตัวแปรเป็นค่า "ไม่ใช่ null" ครั้งแรกในรายการของสิ่งต่าง ๆ หลายภาษารองรับสิ่งนี้เช่น:

ค#:

String myStr = string1 ?? string2 ?? "default";

JavaScript:

var myStr = string1 || string2 || "default";

... ฯลฯ ฉันแค่อยากรู้ว่าสิ่งนี้สามารถทำได้ใน Bash เพื่อตั้งค่าตัวแปรหรือไม่?

หลอก:

MY_STR=$ENV{VAR_NAME}??$ANOTHER_VAR??"default";

คำตอบ:


29

POSIX เชลล์ (รวมถึงbash) เทียบเท่าจะเป็น:

${FOO:-${BAR:-default}}

ดูเพิ่มเติมที่:

${FOO-${BAR-default}}

ตัวแปรที่ตรวจสอบว่ามีการตั้งค่าตัวแปรหรือไม่แทนว่าจะแก้ไขเป็นสตริงว่างหรือไม่ (ซึ่งสร้างความแตกต่างในกรณีที่ตัวแปรถูกตั้งค่า แต่ว่างเปล่า)


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