Làm cách nào để tham chiếu một biến trong vỏ cá với dự phòng mặc định


Câu trả lời:


10

Tôi tin rằng bạn cần biến temponary (hoặc một hàm). Nếu $TESTkhông tồn tại, nó được mở rộng thành không có gì và $test_orchỉ chứa 1. Sẽ rất tốt nếu có cách thực sự để làm điều đó, nhưng hiện tại cú pháp là vấn đề và nó không thực sự cần thiết cho hầu hết các mục đích.

set test_or $TEST 1
echo $test_or[1]

Ngoài ra, nếu tất cả những gì bạn muốn là sửa đổi $TESTnếu nó chưa tồn tại, bạn có thể sử dụng set -q.

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

6

Để tham chiếu một biến và cung cấp một giá trị mặc định trong dòng, bạn có thể sử dụng lệnh thay thế có chứa một điều kiện có echotrên cả hai nhánh.

> 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

Vì đây là loại dài dòng, bạn có thể khởi tạo biến trên một dòng khác khi nó không được đặt.

> echo $otherVar

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

Nếu bạn thực sự muốn có khả năng thay thế một dòng mặc định, bạn có thể thực hiện nó trong một hàm bằng cách sử dụng cảm ứng, và sau đó gọi hàm đó.

> 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.