피쉬(친숙한 대화형 셸)에서 변수가 비어 있는지 상태를 확인하고 싶습니다.
if test "$argv" = null
# do something...
else
# do something else...
답변1
나는 "물고기"를 구체적으로 모르지만 표준적인 "테스트"를 알고 있습니다.
노력하다:
test "$argv" = ""
또는
test "x$argv" = x
또는
test -z "$argv"
이는 설정되지 않았거나 비어 있는지 테스트한다고 가정합니다. 이 두 가지 경우 중 하나만 필요한 경우 쉘별 변수 확장 수정자가 필요합니다.
두 번째 예는 이식성을 높이려는 코드에 자주 나타납니다. null 매개변수는 때때로 손실되는 것처럼 보이므로 이를 방지합니다.
세 번째 예는 test
빈 문자열을 테스트하는 옵션입니다.
답변2
피쉬에 대해서는 잘 모르지만 다른 쉘과 마찬가지로 정의되지 않은 변수와 빈 변수의 구분이 있는 것 같습니다.
FAQ를 보면 그럴 수 있을 것 같습니다.변수가 정의되었는지 테스트with 를 set -q var
사용하여 string length -q
비어 있지 않은 문자열이 포함되어 있는지 확인합니다.
예를 들어, 스크립트의 첫 번째 매개변수가 정의되었는지, 비어 있는지 또는 비어 있지 않은지 확인하려면 다음을 수행하세요.
#!/usr/bin/fish
if not set -q argv[1]
echo 'not defined'
else if not string length -q -- "$argv[1]"
echo 'defined but empty'
else
echo 'defined and non-empty'
end
정의되지 않은 변수와 정의되었지만 빈 변수의 차이에 신경 쓰지 않는다면 첫 번째 테스트를 건너뛰세요. 정의되지 않은 값은 큰따옴표로 묶인 경우 빈 문자열로 확장됩니다.