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

관련 정보