반응형
쉘 스크립트에서 if elif fi 사용
이 질문에 이미 답이 있습니다.
- Bash 5 답변의 간단한 논리 연산자
if
쉘에서 여러 테스트 를 수행하는 방법을 잘 모르겠습니다 . 이 스크립트를 작성하는 데 문제가 있습니다.
echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" && "$arg1" != "$arg3" ]
then
echo "Two of the provided args are equal."
exit 3
elif [ $arg1 = $arg2 && $arg1 = $arg3 ]
then
echo "All of the specified args are equal"
exit 0
else
echo "All of the specified args are different"
exit 4
fi
문제는 매번이 오류가 발생한다는 것입니다.
./compare.sh: [: 누락된 `]' 명령을 찾을 수 없습니다.
sh
&&
쉘 연산자로 해석하고 있습니다. 에 변경 -a
의 것을, [
의 결합 연산자 :
[ "$arg1" = "$arg2" -a "$arg1" != "$arg3" ]
또한 [
인수를 생략하면 혼동 되기 때문에 항상 변수를 인용해야 합니다 .
Josh Lee의 대답은 작동하지만 다음과 같이 더 나은 가독성을 위해 "&&" 연산자를 사용할 수 있습니다.
echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
then
echo "Two of the provided args are equal."
exit 3
elif [ $arg1 = $arg2 ] && [ $arg1 = $arg3 ]
then
echo "All of the specified args are equal"
exit 0
else
echo "All of the specified args are different"
exit 4
fi
이중괄호 사용...
if [[ expression ]]
귀하의 코드에서 샘플이 있습니다. 이 시도:
echo "*Select Option:*"
echo "1 - script1"
echo "2 - script2"
echo "3 - script3 "
read option
echo "You have selected" $option"."
if [ $option="1" ]
then
echo "1"
elif [ $option="2" ]
then
echo "2"
exit 0
elif [ $option="3" ]
then
echo "3"
exit 0
else
echo "Please try again from given options only."
fi
이것은 작동해야합니다. :)
Change "[" to "[[" and "]" to "]]".
This is working for me,
# cat checking.sh
#!/bin/bash
echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
then
echo "Two of the provided args are equal."
exit 3
elif [ $arg1 == $arg2 ] && [ $arg1 = $arg3 ]
then
echo "All of the specified args are equal"
exit 0
else
echo "All of the specified args are different"
exit 4
fi
# ./checking.sh
You have provided the following arguments
All of the specified args are equal
You can add "set -x" in script to troubleshoot the errors,
Thanks.
ReferenceURL : https://stackoverflow.com/questions/2359270/using-if-elif-fi-in-shell-scripts
반응형
'IT이야기' 카테고리의 다른 글
다른 JFrame을 닫지 않고 하나의 JFrame을 닫으셨습니까? (0) | 2021.09.16 |
---|---|
LOAD DATA INFILE을 사용하여 MySQL 테이블로 가져올 때 CSV 파일의 열을 건너뛰는 방법은 무엇입니까? (0) | 2021.09.16 |
영구 쿠키와 비영구 쿠키는 어떻게 만듭니까? (0) | 2021.09.16 |
C의 모든 공백에서 문자열 분할 (0) | 2021.09.15 |
os.sep 또는 os.path.sep 중 어느 것을 사용해야 합니까? (0) | 2021.09.15 |