파일 내용이 비어 있는지 확인하려면 다음 문을 사용하세요.
if test -z `cat filename`
파일 이름이 비어 있거나 내용이 없는 문자열이 한 줄만 있는 경우 space , 모든 것이 정상입니다. 그렇지 않으면 인수가 너무 많거나 이진 연산자가 예상되는 경우와 같은 오류가 보고됩니다.
원인 분석:
파일 이름의 공백과 캐리지 리턴이 bash를 혼란스럽게 합니다.
환경 변수를 큰따옴표로 묶지 않으면 bash는 조건에 독립 변수가 너무 많다고 생각합니다.
문자열 인수를 큰따옴표로 묶어 이 문제를 해결할 수 있습니다.
모든 문자열 인수를 큰따옴표로 묶는 습관을 들이면 유사한 프로그래밍 오류를 많이 제거할 수 있을 것 같습니다.
해결책:
명령 실행 부분에 큰따옴표만 추가하세요.
if test -z "`cat filename`"
셸에 인수가 너무 많은 경우 해결 방법 2:
오늘은, 작은 문제를 해결하기 위해 가끔 이상한 문제가 발생했습니다. "[ ]"와 "[[ ]]"는 요약하면 다음과 같습니다.
코드를 보여주세요: If [ -z ` lsof -i :22 ` ] //이 방법은 너무 많은 인수를 보고하므로 [[ -z ` lsof -i:22 ` ]]
로 변경합니다. ~ 🎜> Else
Fi
이 간단한 셸 스크립트를 실행할 때 항상 너무 많은 인수가 보고됩니다. 간단히 말해서 "[[ ]]"는 "[ ]"보다 더 나은 융통성을 가지므로 이 문제를 피하려면 다음과 같이 바꾸십시오. "[ ]" 와 함께 "[[ ]]" . 또한 "[[ ]]"는 "[ ]"보다 내결함성이 더 높습니다. 즉, "[ ]"에서 보고될 수 있는 오류는 &&, ||와 같은 "[[ ]] 구조에서는 보고되지 않을 수 있습니다. 등. 이런 논리적 판단은 이 글의 초점이 아니므로 간략하게 언급하겠습니다.