셸 스 크 립 트 프로 그래 밍 학습 의 길 - 논리 연산 자

4473 단어 linuxshell
1. 논리 연산 자 예시
알림:
!논리 값 과 반대 되 는 논리 값
- a 중국어 뜻 은 (& &): 두 논리 값 이 모두 진실 반환 값 이 어야 진실 이 고 반대로 가짜 라 는 것 이다.
- o 중국어 뜻 또는 (or): 두 논리 값 은 하나 가 진실 이 고 반환 값 은 진실 입 니 다.
결론:
진짜 1 가짜 false 0
(1) - a 또는 & (논리 와) 의 연산 규칙: 양 끝 이 모두 1 이 어야 곱셈 연산 에 해당 한다.
and 1*0=0 

and 0*1=0

and 1*1=1

and 0*0=0

양 끝 이 모두 1 이 어야 진실 이 고, and 가 교차 합 니 다.
(2) - o 또는 | (논리 또는) 의 연산 규칙: 양 끝 은 모두 0 이 어야 가짜 이 고 그 어떠한 한 끝 도 0 이 아니 라 진실 입 니 다.
or 1+0=1  

or 1+1=2  

or 0+1=1  

or 0+0=0  

양쪽 모두 0 이 어야 가짜 이 고, 0 이 아니면 진실 이다.병합
(3) 여기에 시스템 이 같 지 않 은 예 가 있다.
예시:
2. 실천
(1) "- a"와 "- o", 논리 연산 기 호 는 [] 에서 사용 합 니 다.
(2) "& &"와 "| |", 논리 연산 기 호 는 [[] 에서 사용 합 니 다.
(3) 괄호 양 끝 에 빈 칸 이 있어 야 합 니 다.
3. 시스템 스 크 립 트 예
4. 소결: 논리 연산 자 사용 총화
(1) [] 중 괄호 에 - a, - o!!이런 조작 부호.
(2) [[] 이중 괄호 에서 &, | |,!이런 조작 부호.
(3) 논리 조작 자 는 test 와 [] 의 괄호 를 사용한다.
(4) 여러 개 [] 사이 와 여러 개 [] 사이 또는 중간 논리 연산 자 를 임의로 혼합 하여 & & 또는 | | | 을 사용 합 니 다.
5. 종합 실례:
(1) 변수, 스 크 립 트 전송, read 읽 기 방식 으로 두 정수 의 크기 를 조건 식 (if 사용 금지) 으로 비교 하여 판단 하고 화면 출력 방식 으로 비교 결 과 를 알려 주 며 모두 3 개의 스 크 립 트 를 개발 합 니 다.스 크 립 트 전송 및 read 읽 기 방식 으로 변수의 값 을 숫자 로 판단 하고 전송 개수 가 사용자 에 게 알려 주지 않 으 면 알려 줍 니 다.
a. 스 크 립 트 전송 방식
[root@shellbiancheng ~]# cat zhengshubijiao.sh 
#!/bin/sh
#    
[ $# -ne 2 ]&&{
echo $"Usage :$0 {num1 and num2}"
exit 1
}

[[ "`echo "$1"|sed -r 's#[^0-9]##g'`" = "$1" ]]||{
echo "first arg must be int"
exit 2

}
[[ "`echo "$2"|sed -r 's#[^0-9]##g'`" = "$2" ]]||{
echo "first arg must be int"
exit 2

}
[ $1 -eq $2 ]&&{
echo "$1=$2"
exit 0
}
[ $1 -gt $2 ]&&{
echo "$1>$2"
exit 0
}
[ $1 -lt $2 ]&&{
echo "$10
[root@shellbiancheng ~]# sh zhengshubijiao.sh 1 1
1=1
[root@shellbiancheng ~]# sh zhengshubijiao.sh 1 e
first arg must be int
[root@shellbiancheng ~]# sh zhengshubijiao.sh e 1
first arg must be int

b. read 읽 기 방식
[root@shellbiancheng ~]# cat zhengshubijiao1.sh 
#!/bin/sh
read -p "please input two num:" num1 num2
c="please input two num"
a=$num1;b=$num2
[ -z "$a" -o -z "$b" ]&&{
echo $"Usage :$c{num1 and num2}"
exit 1
}
[[ "`echo "$a"|sed -r 's#[^0-9]##g'`" = "$a" ]]||{
echo "first arg must be int"
exit 2
}
[[ "`echo "$b"|sed -r 's#[^0-9]##g'`" = "$b" ]]||{
echo "first arg must be int"
exit 2
}
[ $a -eq $b ]&&{
echo "$a=$b"
exit 0
}
[ $a -gt $b ]&&{
echo "$a>$b"
exit 0
}
[ $a -lt $b ]&&{
echo "$a0
[root@shellbiancheng ~]# sh zhengshubijiao1.sh 
please input two num:1 2
1<2
[root@shellbiancheng ~]# sh zhengshubijiao1.sh 
please input two num:1 e
first arg must be int
[root@shellbiancheng ~]# sh zhengshubijiao1.sh 
please input two num:e 1
first arg must be int

변 수 를 정의 하 는 것 은 read 를 읽 는 a 와 b 의 값 을 부여 한 다음 에 read 를 제거 하 는 것 입 니 다. 예 를 들 지 않 겠 습 니 다.
(2) 선택 메뉴 를 인쇄 하고 웹 서 비 스 를 원 클릭 으로 설치 합 니 다.
요청:
사용자 가 1 을 입력 하면 "start installing lamp"을 출력 하고/server/script/lamp. sh 를 실행 합 니 다. 스 크 립 트 내용 은 "lamp is installing"을 출력 한 후 스 크 립 트 를 종료 합 니 다.사용자 가 2 를 입력 할 때 "start installing lnmp"를 출력 한 다음/server/script/lnmp. sh 를 실행 하고 "lnmp is installed"를 출력 한 후 스 크 립 트 를 종료 합 니 다.3 을 입력 하면 현재 메뉴 와 스 크 립 트 를 종료 합 니 다.다른 문 자 를 입력 하면 "Input error"를 알려 주 고 스 크 립 트 를 종료 합 니 다.실 행 된 스 크 립 트 에 대해 관련 조건 을 판단 해 야 합 니 다. 예 를 들 어 스 크 립 트 가 존재 하 는 지, 실행 가능 한 지 등 입 니 다.
메뉴 인쇄, 웹 서비스 설치 실현
[root@shellbiancheng ~]# cat webmenu.sh 
#!/bin/bash
export PATH="/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/curl/bin:/root/bin"
path="/server/scripts"
RETVAL=0
[ -d "$path" ]|| mkdir -p $path
menu(){
cat </dev/null
if [ $? -ne $RETVAL ];then

echo "the num you input must be (1|2|3)."
exit 1
else
man
fi

좋은 웹페이지 즐겨찾기