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