셸 스크립트에서 문자열이 비어 있지 않거나 공백이 아닌지 확인
문자열이 공백도 비어 있지 않은지 확인하기 위해 다음 셸 스크립트를 실행하려고 합니다.하지만 언급된 3개의 문자열에 대해서는 모두 동일한 출력을 받고 있습니다."[] 구문도 사용해봤지만 소용이 없었습니다.
내 코드는 다음과 같습니다.
str="Hello World"
str2=" "
str3=""
if [ ! -z "$str" -a "$str"!=" " ]; then
echo "Str is not null or space"
fi
if [ ! -z "$str2" -a "$str2"!=" " ]; then
echo "Str2 is not null or space"
fi
if [ ! -z "$str3" -a "$str3"!=" " ]; then
echo "Str3 is not null or space"
fi
다음과 같은 출력을 받고 있습니다.
# ./checkCond.sh
Str is not null or space
Str2 is not null or space
양쪽에 공간이 필요합니다.!=코드를 다음으로 변경:
str="Hello World"
str2=" "
str3=""
if [ ! -z "$str" -a "$str" != " " ]; then
echo "Str is not null or space"
fi
if [ ! -z "$str2" -a "$str2" != " " ]; then
echo "Str2 is not null or space"
fi
if [ ! -z "$str3" -a "$str3" != " " ]; then
echo "Str3 is not null or space"
fi
셸의 빈 문자열 확인용
if [ "$str" == "" ];then
echo NULL
fi
OR
if [ ! "$str" ];then
echo NULL
fi
문자열에 공백이 아닌 다른 항목이 있는지에 대한 또 다른 빠른 테스트입니다.
if [[ -n "${str// /}" ]]; then
echo "It is not empty!"
fi
"-n"은 길이가 0이 아닌 문자열을 의미합니다.
그런 다음 처음 두 슬래시는 다음과 같은 모든 것과 일치한다는 것을 의미합니다.그런 다음 세 번째 슬래시 뒤에 대체(빈) 문자열이 오고 "}"로 닫힙니다.일반적인 정규식 구문과의 차이점에 유의하십시오.
bash 셸 스크립팅의 문자열 조작에 대한 자세한 내용은 여기를 참조하십시오.
단일 공간뿐만 아니라 빈 공간의 양을 확인해야 하는 경우 다음 작업을 수행할 수 있습니다.
추가 공백 문자열을 제거하려면(중간 공백을 한 공간으로 압축):
trimmed=`echo -- $original`
그--다음의 경우를 보장합니다.$original에코로 이해되는 스위치를 포함하며, 여전히 에코로 인식되는 일반 인수로 간주됩니다.또한 넣지 않는 것이 중요합니다.""주위에$original그렇지 않으면 공백이 제거되지 않습니다.
그 후에 당신은 그냥 확인할 수 있습니다.$trimmed비어 있습니다.
[ -z "$trimmed" ] && echo "empty!"
문자열이 비어 있거나 공백만 포함되어 있는지 확인하려면 다음을 사용할 수 있습니다.
shopt -s extglob # more powerful pattern matching
if [ -n "${str##+([[:space:]])}" ]; then
echo '$str is not null or space'
fi
Bash 매뉴얼의 셸 매개 변수 확장 및 패턴 일치를 참조하십시오.
[ $(echo $variable_to_test | sed s/\n// | sed s/\ //) == "" ] && echo "String is empty"
문자열에서 모든 새 줄과 공백을 제거하면 빈 줄이 테스트 및 작업할 수 있는 빈 줄로 줄어듭니다.
언급URL : https://stackoverflow.com/questions/13509508/check-if-string-is-neither-empty-nor-space-in-shell-script
'programing' 카테고리의 다른 글
| 바인딩의 기본값은 무엇입니까?Mode= WPF 컨트롤의 기본값은 무엇입니까? (0) | 2023.05.20 |
|---|---|
| 이전 커밋에서 파일 복원 (0) | 2023.05.20 |
| 스트림을 C#의 파일에 저장하려면 어떻게 해야 합니까? (0) | 2023.05.15 |
| POST를 통해 파라미터를 Azure 함수로 전달하는 방법은 무엇입니까? (0) | 2023.05.15 |
| C#은 왜 수학을 실행합니까?Sqrt()가 VB보다 느립니다.NET? (0) | 2023.05.15 |