저는 bash를 배우고 있는데 이 코드 줄이 어떻게 작동하는지(왜) 혼란스럽습니다 if [$1 = ]; then
. 누군가 이것을 설명할 수 있나요?
Bash 튜토리얼에서여기아래에파일 이름 바꾸기(여섯 번째 블록)
# a quick check to see if any files were given
# if none then it's better not to do anything than rename some non-existent
# files!!
if [$1 = ]; then
echo "no files given"
exit 0
fi
답변1
이 코드는 잘못되었습니다. 인수가 특수 문자가 아니기 때문에 비어 있지 않고(공백으로 시작하지 않는 경우) 별도의 단어가 아닌 경우(인식으로 사용되지 않는 경우에도[
) 작동하지 않습니다. [[
명령.
set -x
쉘이 보는 것을 보여주기 위해:
set -x
[$1 = ]
+ '[' = ']'
[
]
이 경우 와 사이에 문자열이 있으므로 테스트는 true입니다 =
.
null이 아닌 매개변수에 대한 테스트는 다음과 같이 수행되어야 합니다.
[ -n "$1" ] ; echo $?
+ '[' -n '' ']'
+ echo 1
또는
[ -z "$1" ] ; echo $?
+ '[' -z '' ']'
+ echo 0
대신에