ฉันจะอ้างอิงตัวแปรใน fish shell โดยใช้ทางเลือกเริ่มต้นได้อย่างไร


16

เปลือกปลาเทียบเท่ากับ bash ต่อไปนี้คืออะไร:

echo ${TEST:-1}

ในทุบตีนี้จะพิมพ์ค่าของการทดสอบถ้ามีอย่างใดอย่างหนึ่งหรือ 1 หากไม่มี


ดูเพิ่มเติมที่github.com/fish-shell/fish-shell/issues/…สำหรับคำอธิบายของผู้ดูแลบางคน
webwurst

คำตอบ:


10

ฉันเชื่อว่าคุณต้องการตัวแปร temponary (หรือฟังก์ชั่น) ถ้า$TESTไม่อยู่ก็ขยายเพื่ออะไรและมีเพียง$test_or 1มันคงจะดีถ้ามีวิธีการทำเช่นนั้นจริง ๆ แต่ในปัจจุบันมีปัญหาเกี่ยวกับไวยากรณ์และไม่ปรากฏว่าจำเป็นสำหรับจุดประสงค์ส่วนใหญ่

set test_or $TEST 1
echo $test_or[1]

นอกจากนี้ถ้าทั้งหมดที่คุณต้องการคือการปรับเปลี่ยนถ้ามันไม่ได้อยู่แล้วคุณสามารถใช้$TESTset -q

set -q TEST; or set TEST 1
echo $TEST

6

หากต้องการอ้างอิงตัวแปรและระบุค่าเริ่มต้นในบรรทัดคุณสามารถใช้การทดแทนคำสั่งที่มีเงื่อนไขซึ่งใช้echoกับทั้งสองสาขา

> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
a default value
> set someVar 42
> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
42

เนื่องจากนี่เป็นชนิดของ verbose คุณสามารถเริ่มต้นตัวแปรในบรรทัดอื่นเมื่อไม่ได้ตั้งค่า

> echo $otherVar

> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value

หากคุณต้องการความสามารถในการแทนที่ค่าเริ่มต้นในบรรทัดคุณสามารถทำได้ในฟังก์ชั่นโดยใช้ทางอ้อมจากนั้นเรียกใช้ฟังก์ชันนั้น

> function orDefault
      set -q $argv[1]; and echo $$argv[1]; or echo $argv[2]
  end
>
> echo $moreVar

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