Shell 진급 (1) for 와 case 의 용법

5804 단어 linux
프로 세 스 제어
1. 조건 선택 if 문 구 는 61557 ° 선택 실행: 전체 61557 ° 주의: if 문 구 는 단일 분기 if 판단 조건 을 포함 할 수 있 습 니 다.then 조건 은 진짜 분기 코드 fi 단일 분기 cmd 1 & & cmd 2 에 해당 합 니 다.
2 분기 if 판단 조건;then 조건 은 진짜 분기 코드 else 조건 은 가짜 분기 코드 fi 조건 으로 판단 합 니 다. 처음 "진짜"조건 을 만 났 을 때 그 가 지 를 실행 한 다음 에 전체 if 문 구 를 끝 냅 니 다. 두 가 지 는 cmd 1 & & cmd 2 | | cmd 3 에 해당 하지만 cmd 2 는 성공 해 야 합 니 다.
다 분기 if 판단 조건 1;then 조건 1 은 진짜 분기 코드 elif 판단 조건 2;then 조건 2 는 진짜 분기 코드 elif 판단 조건 3;then 조건 3 은 진짜 분기 코드 else 이상 조건 은 모두 가짜 분기 코드 fi 입 니 다.
조건 에 따라 판단 하고 '진짜' 조건 을 처음 만 났 을 때 그 가 지 를 집행 한 다음 에 전체 if 문 구 를 끝 냅 니 다.
If 예제 1. 명령 의 종료 상태 에 따라 명령 if ping - c1 - W2 station 1 & >/dev/null 을 실행 합 니 다.then echo ‘Station1 is UP’ elif grep “station1” ~/maintenance.txt &>/dev/null; then echo ‘Station1 is undergoing maintenance‘ else echo ‘Station1 is unexpectedly DOWN!’ exit 1 fi
2. age. shell 은 나이 수 치 를 입력 하여 해당 하 는 정 보 를 표시 합 니 다. (18 세 이하 매일 열심히 공부 하고 60 세 이하 열심히 일 하 며 60 세 이후 생활 을 즐 깁 니 다. 다른 입력 은 지구 인 이 아 닙 니 다)
3. 스 크 립 트 areyorich. sh 를 작성 하여 다음 논 리 를 완성 합 니 다.
4. 조건 판단: case 문장
case 예제: 1. 스 크 립 트 를 작성 하고 numcase. sh 는 숫자 를 입력 하 며 1, 2, 3 에 속 하면 1, 2, 3 을 표시 합 니 다.4, 5, 6 에 속 하면 4, 5, 6 을 표시 합 니 다.7, 8, 9 에 속 하면 7, 8, 9 를 나타 낸다.그렇지 않 으 면 "other digit"read - p "Please input a digit:"num case $num in 1 | 2 | 3) echo 1, 2, 3;4|5|6) echo 4,5,6 ;; 7|8|9) echo 7,8,9 ;; *) echo “other digit” ;; esac
2. 스 크 립 트 를 작성 합 니 다. menucase. sh.메뉴 목록 주문 001. rice – 2 RMB 002. noodles – 15 RMB 003. dumpligs - 18 RMB 004. beer - 6RMB
연습 1. 스 크 립 트/root/bin/createuser. sh 를 작성 하여 다음 과 같은 기능 을 수행 합 니 다. 사용자 이름 을 매개 변수 로 사용 합 니 다. 지정 한 매개 변수 가 존재 하면 존 재 를 표시 합 니 다. 그렇지 않 으 면 추가 합 니 다.추 가 된 사용자 의 id 번호 등 정보 보이 기
2. 스 크 립 트/root/bin/yesorno. sh 를 작성 하여 사용자 에 게 yes 또는 no 를 입력 하 라 고 알려 주 고 사용자 가 yes 또는 no 를 입력 하 는 지, 또는 다른 정 보 를 판단 합 니 다.
3. 스 크 립 트/root/bin/filetype. sh 를 작성 하여 사용자 의 입력 경 로 를 판단 하고 파일 형식 (일반, 디 렉 터 리, 링크, 기타 파일 형식) 을 표시 합 니 다.
4. 스 크 립 트/root/bin/checkint. sh 를 작성 하여 사용자 가 입력 한 매개 변수 가 정수 인지 여 부 를 판단 합 니 다. ["num"= [1−9][0−9]+ n u m "=   [ 1 − 9 ] [ 0 − 9 ] + ]]
5. 순환 - 순환 조건 이 알려 진 순환 실행 은 특정한 코드 세그먼트 를 여러 번 반복 적 으로 실행 합 니 다. 순환 횟수 를 미리 알 고 있 는 순환 횟수 는 사전에 진입 조건 과 종료 조건 for, while, until 이 있 는 지 알 수 없습니다.
6. for 순환 문법 1: for 변수 이름 in 목록, do 순환 체 done 실행 체제: 목록 에 있 는 요 소 를 순서대로 "변수 이름"에 할당 합 니 다. 할당 할 때마다 순환 체 를 실행 합 니 다. 목록 에 있 는 요소 가 다 떨 어 질 때 까지 순환 이 끝 납 니 다.
for 순환 예제 1. 스 크 립 트 sum 100 - for. sh 를 작성 하고 1 - 100 의 숫자 를 먼저 열거 한 다음 에 1 - 100 누적 과 for num in {1. 100}, do echo "num = num", donesum = 0; fornumin 1. 1000; dosum = n u m "을 구하 십시오.d o n e s u m = 0 ; f o r n u m i n 1..100 ; d o s u m = [sum+num]; done;echo sum=$sum
목록 생 성 방식: (1) 목록 을 직접 보 여 줍 니 다 (2) 정수 목록: (a) {start. end} (b) (seq [start [step]] end)  seq 1 2 10   #1 - 10, 스텝 값 = 2  (3) 목록 의 명령 을 되 돌려 줍 니 다 (seq [start [step]] end)  seq 1 2 10   #1 - 10, 스텝 값 = 2  (3) 목록 의 명령 을 되 돌려 줍 니 다 (COMMAND) (4) glob (마스크) 를 사용 합 니 다. 예 를 들 어 *. sh (5) 변수 참조; @ *
목록 생 성 스 크 립 트 예제: 1. 스 크 립 트 creatuser 100 - magedu. sh 를 작성 하고 user 1 을 만 듭 니 다... user 100, 초기 암 호 는 magedu 이 며, 첫 로그 인 시 암 호 를 수정 해 야 합 니 다 for i in seg 1 100.do useradd useri &>/dev/null  echo magedu | passwd –stdin user i &>/dev/null  echo magedu | passwd –stdin user i &>/dev/null passwd -e user i i >/dev/null done
2. 스 크 립 트 scanip. sh 를 작성 하여 현재 네트워크 의 어떤 IP 가 up 인지 스 캔 하고 파일 에 기록 합 니 다./ipist. log 는 순서 가 너무 느 리 기 때문에 동시 실행 (곶 &
./iplist. log\# IP 를 추가 할 때마다 read - p "Please input network ID (eg: 192.168.0.0) 를 반복 하지 않도록 한 번 비 워 야 합 니 다."net net = echo $net | cut -d. -f1-3\# 사용자 정의 for i in seq 1 254;do {if ping - c1 - W1 net. n e t. i & >/dev/null; then echo "The host net. n e t. i is up"echo net. n e t. i >./iplist. log else echo "The host net. n e t. i is down"fi} & done wait\# wait 명령 은 스 크 립 트 가 실 행 된 후 자동 으로 되 돌아 오 며, 실행 이 끝 났 지만 알림 문자 가 나타 나 지 않도록 알림 문 자 를 표시 합 니 다.
3. IP 주소 와 서브 넷 마스크 를 입력 하고 네트워크 ID 를 계산 할 수 있 도록 스 크 립 트 netid. sh 를 작성 합 니 다.read -p “Please input a ip address: ” ip read -p “Please input a netmask: ” netmask for i in {1..4} ; do net= echo $ip | cut -d. -f$i mask= echo $netmask | cut -d. -f$i if [ i−eq1];thennetid= i − e q 1 ] ; t h e n n e t i d = [net&mask] else netid= netid. n e t i d . [net&mask] fi done echo Network ID is $netid
연습: for 로 1, 판단/var/디 렉 터 리 의 모든 파일 형식
2. 사용자 user 1 - user 10 10 개 를 추가 하고 비밀 번 호 는 8 비트 무 작위 문자 입 니 다.
3./etc/rc. d/rc3. d 디 렉 터 리 에 각각 K 로 시작 하고 S 로 시작 하 는 파일 이 여러 개 있 습 니 다.각각 파일 을 읽 고 K 로 시작 하 는 출력 에 stop 을 추가 하고 S 로 시작 하 는 출력 에 start 를 추가 합 니 다. 예 를 들 어 K34filename stop S66 filename start
4. 스 크 립 트 를 작성 하고 정수 n 의 값 을 입력 하 는 것 을 알려 줍 니 다. 1 + 2 +... + n 의 합 계 를 계산 합 니 다.
5. 100 이내 에 3 으로 나 눌 수 있 는 모든 정수 의 합 을 계산한다.
6. 스 크 립 트 를 작성 합 니 다. 힌트 는 네트워크 주 소 를 입력 하 십시오. 예 를 들 어 192.168.0.0 입 니 다. 입력 한 네트워크 의 호스트 온라인 상 태 를 판단 합 니 다.
7. 99 곱셈 표 for99sheet. sh for i in {1.9} 을 인쇄 합 니 다.do for j in seq $i ;do echo -e “j∗ j ∗ i= (( ( ( j*$i))\t\c” done echo done
8./testdir 디 렉 터 리 에 html 파일 10 개 를 만 듭 니 다. 파일 이름 형식 은 숫자 N (1 부터 10 까지) 에 무 작위 8 자 모 를 추가 합 니 다. 예 를 들 어 1AbCdeFgH. html 무 작위 수: tr - dc '0 - 9a - zA - Z' tr -dc '0-9a-zA-Z' < /dev/urandom | head -c8. html; done
9. 등허리 삼각형 인쇄
10. 체스 판 chess. sh 사고: 행 수 와 열 수 i 와 j, 모드 (나머지) 와 같은 격자 색 은 같은 for i in {1.8}, do temp 1 = [i% 2]
for j in {1..8}; do temp2= [ [ j % 2 ] if [ temp1−eq t e m p 1 − e q temp2 ];then echo -e -n “\033[47m\033[0m” else echo -e -n “\033[41m\033[0m” fi done echo done

좋은 웹페이지 즐겨찾기