tcsh의 문자열이 비어 있는지 확인하는 방법

tcsh의 문자열이 비어 있는지 확인하는 방법

tcsh의 문자열이 비어 있는지 확인하는 방법은 무엇입니까?

당황하기 전에 아니요. 저는 tcsh를 사용하여 쉘 스크립트를 작성하지 않습니다. 내 .tcshrc 파일에서 이것을 사용하고 싶기 때문에 묻는 것입니다.

특히, 저는 tcsh에서 다음 bash 코드와 동등한 작업을 수행하고 싶습니다.

if [[ -z $myVar ]]; then
  echo "the string is blank"
fi

답변1

if ("$myVar" == "") then
  echo "the string is blank"
endif

csh에서는 정의되지 않은 변수에 액세스하려고 하면 오류가 발생합니다. (Bourne 쉘의 관점에서는 set -u항상 유효한 것으로 보입니다.) 변수가 정의되었는지 테스트하려면 다음을 사용하십시오 $?myVar.

if (! $?myVar) then
  echo "myVar is undefined"
else
  if ("$myVar" == "") then
    echo "myVar is empty"
  else
    echo "myVar is non-empty"
  endif
endif

중첩 사용에 유의하세요 if. 첫 번째 조건이 true인 경우에도 조건이 해결되므로 else if여기서는 사용할 수 없습니다 . "$myVar" == ""비어 있는 케이스와 정의되지 않은 케이스를 같은 방식으로 처리하려면 먼저 변수를 설정하십시오.

if (! $?myVar) then
  set myVar=""
endif

if ("$myVar" == "") then
  echo "myVar is empty or was undefined"
else
  echo "myVar is non-empty"
endif

답변2

test(1)을 사용할 수 있습니다. 예를 들어:

% test -z "$myVar" && echo "the string is blank"

또는

% [ -z "$myVar" ] && echo "the string is blank"

둘 다 $myVar가 설정되어 있다고 가정합니다.

답변3

를 사용하면 생성자를 tcsh사용하여 ${%var}변수의 문자 수를 확인할 수 있습니다 var.

if (${%var} == 0) then
  echo 'var is empty'
endif

관련 정보