如何使用默认回退引用 Fish shell 中的变量

如何使用默认回退引用 Fish shell 中的变量

是什么鱼壳相当于以下 bash:

echo ${TEST:-1}

在 bash 中,如果有则打印 TEST 的值,如果没有则打印 1。

答案1

我相信你需要临时变量(或函数)。如果$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

答案2

要引用变量并提供内联默认值,您可以使用包含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

相关内容