デフォルトのフォールバックで魚のシェルの変数を参照するにはどうすればよいですか


回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.