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

関連情報