Câu trả lời:
Tôi tin rằng bạn cần biến temponary (hoặc một hàm). Nếu $TEST
không tồn tại, nó được mở rộng thành không có gì và $test_or
chỉ 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 $TEST
nế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
Để 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ó echo
trê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