答え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