什么是鱼贝等同于以下的bash:
echo ${TEST:-1}
Run Code Online (Sandbox Code Playgroud)
在 bash 中,如果有 1,则打印 TEST 的值,如果没有,则打印 1。
Kon*_*ski 15
我相信您需要临时变量(或函数)。如果$TEST
不存在,则将其扩展为空,并且$test_or
仅包含1
. 有真正的方法会很好,但目前语法是有问题的,而且对于大多数目的似乎并不真正需要它。
set test_or $TEST 1
echo $test_or[1]
Run Code Online (Sandbox Code Playgroud)
此外,如果您只想修改$TEST
它不存在的内容,则可以使用set -q
.
set -q TEST; or set TEST 1
echo $TEST
Run Code Online (Sandbox Code Playgroud)
小智 7
要引用一个变量并提供一个内联的默认值,您可以使用包含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
Run Code Online (Sandbox Code Playgroud)
由于这有点冗长,您可以在未设置时在不同的行上初始化变量。
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Run Code Online (Sandbox Code Playgroud)
如果您真的希望能够替换默认的内联,您可以使用间接在函数中完成,然后调用该函数。
> 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
Run Code Online (Sandbox Code Playgroud)