我如何在鱼壳中使用默认回退引用变量


Answers:


10

我相信您需要临时变量(或函数)。如果$TEST不存在,则将其扩展为空,$test_or仅包含1。拥有真正的实现方法会很不错,但是目前语法是有问题的,并且看来大多数情况下并不需要它。

set test_or $TEST 1
echo $test_or[1]

另外,如果您只想修改$TEST尚不存在的内容,则可以使用set -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

由于这很冗长,因此可以在未设置变量时在另一行上初始化变量。

> 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.