문제
아래의 쉘 스크립트로 테스트하고 있습니다.
#!/bin/ksh -x
instance=`echo $1 | cut -d= -f2`
if [ $instance == "ALL" ]
then
echo "strings matched \n"
fi
IF 조건 에서이 오류가 발생합니다.
: ==: unknown test operator
~이다 ==
사용하기에 적합한 구문이 아니십니까? 아래와 같이 명령 줄에서 실행 중입니다
test_lsn_2 INSTANCE=ALL
누구든지 해결책을 제안 할 수 있습니까? 감사.
해결책
나는 당신이 KSH를 사용하고 있다는 것을 알지만 Bash를 태그로 추가했습니다. Bash 관련 답변을 수락합니까? Bash를 사용하면 다음과 같은 방법으로 수행 할 수 있습니다.
if [[ "$instance" == "ALL" ]]
if [ "$instance" = "ALL" ]
if [[ "$instance" -eq "ALL" ]]
보다 여기 그것에 대한 자세한 내용.
다른 팁
문자열을 비교하려면 이중이 아닌 단일 =가 필요합니다. 문자열이 비어있는 경우 이중 인용구로 넣어야합니다.
if [ "$instance" = "ALL" ]
then
echo "strings matched \n"
fi
노력하다
if [ "$instance" = "ALL" ]; then
몇 가지 실수가있었습니다.
비어있는 (가능성이없는) 케이스를 보호하려면 변수 주변의 이중 인용문이 필요합니다. 이 경우 껍질이 보입니다
if [ = "ALL" ]; then
유효하지 않습니다.쉘의 동등한 사람은 단일을 사용합니다
=
(값을 할당하는 방법이 없습니다.if
쉘에서).
totest=$1
case "$totest" in
"ALL" ) echo "ok" ;;
* ) echo "not ok" ;;
esac
나는 이미 비슷한 질문에 대답했다. 기본적으로 필요한 운영자는입니다 =
(아니다 ==
) 그리고 변수가 비어 있으면 구문이 끊어집니다 (예 : if [ = ALL]
). 살펴보십시오 다른 대답 자세한 내용은.
제휴하지 않습니다 StackOverflow