링크 ux 셸 입문 4

55539 단어
1. 기본 정규 표현 식 은 Liux 에서 정규 표현 식 은 조건 에 맞 는 문자열 에 사 용 됩 니 다. 지원 하 는 명령 은 grep, sed, awk 어댑터 가 조건 에 맞 는 파일 이름 에 사 용 됩 니 다. 지원 하 는 명령 은 ls, find, cp 등 기본 정규 표현 식 이 있 습 니 다.
문자
역할.
*
이전 문자 가 0 번 이나 여러 번 일치 합 니 다.
.
줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다.
^
일치 하 는 줄 의 첫머리
$
일치 하 는 줄 끝
[]
괄호 안에 있 는 문자 와 일치 합 니 다.
[^]
괄호 를 제외 한 임의의 문자 와 일치 합 니 다.
\{n,m\}
앞의 문자 와 일치 하면 n, m 이상 의 문자 가 나타 납 니 다.
\{n,\}
앞의 문자 와 일치 하 는 횟수 가 적지 않 습 니 다 n
\{n\}
앞 글자 n 번 나타 나 기
테스트
grep "a*" test
  779  grep "aa*" test //      a  
  780  grep "aaa*" test  //    2 a  
  781  grep "aaaaa*" test  
  782  grep "s..d" test   //  s d           
  784  grep "s.*d" test  //  s d           

  786  grep ".*" test      ,    
  787  grep "^M" test     M    
  788  grep "r$" test     r    
  789  grep "y$" test
  792   grep -n "^$" test     
  793  grep "s[ao]id" test   s d   a O  
  794  grep "[0-9]" test                
  795  grep "[^0-9]" test                
  796  grep "^[^0-9]" test                   
  797  grep "^[0-9]" test           ,      
  798  grep "\.$" test                    
  799  grep "a\{3,\}" test     3 a 
  800  grep "a\{3\}" test      3 a 
  801  grep "a\{3,4\}" test     3 a 
  802  grep "a\{3,3\}" test     3 a 
  803  grep "a\{3,4\}id" test   a id  ,   a id    34 a

2. 문자 캡 처 명령 cut 필드 캡 처 명령
[mq@mq shell]$ cut -f 1,3 student.txt
[mq@mq shell]$ cut -d ":" -f 1,3 /etc/passwd
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"
root:x:0:0:root:/root:/bin/bash
mq:x:1000:1000:mq:/home/mq:/bin/bash
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"|grep -v "root"
mq:x:1000:1000:mq:/home/mq:/bin/bash
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"|grep -v "root"|cut -d ":" -f 1
mq
[mq@mq shell]$ df -h |grep "fedora-root"|cut -d " " -f  5

//cut           

##printf
%ns
출력 문자열 형
%ni
출력 정수
%m.nf
자리수 와 정수 자리수
[mq@mq shell]$ printf '%s %s %s' 1 2 3 4 5 6
1 2 34 5 6[mq@mq shell]$ printf '%s %s %s ' 1 2 3 4 5 6
1 2 3 4 5 6 [mq@mq shell]$

[mq@mq shell]$ printf "%s
%s
%s
"
1 2 3 1 2 3 [mq@mq shell]$ printf "%s" $(cat mq)// IDNamegenderMark1LimingM862ScM903GaoM83[mq@mq shell]$ [mq@mq shell]$ printf "%s\t%s\t%s\t%s
"
$(cat mq)// ID Name gender Mark 1 Liming M 86 2 Sc M 90 3 Gao M 83

awk 명령
awk '조건 1 {동작 1} 조건 2 {동작 2}...' 파일 이름 조건 관계 표현 식 조건 동작: 포맷 된 출력 이나 프로 세 스 제어 문
[mq@mq shell]$ cat student.txt 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66
[mq@mq shell]$ awk '{printf $2"\t" $6 "
"}'
student.txt Name Average Liming 87.66 Sc 85.66 Gao 91.66 [mq@mq shell]$ df -h|awk '{print $1 "\t" $5 "\t" $6}' % devtmpfs 0% /dev tmpfs 1% /dev/shm tmpfs 1% /run tmpfs 0% /sys/fs/cgroup /dev/mapper/fedora-root 16% / tmpfs 1% /tmp /dev/sda5 15% /boot /dev/mapper/fedora-home 16% /home tmpfs 1% /run/user/42 tmpfs 2% /run/user/1000 /dev/sda2 29% /run/media/mq/ [mq@mq shell]$ df -h|grep sda5|awk '{print $5}' 15% [mq@mq shell]$ df -h|grep sda5|awk '{print $5}'|cut -d % -f 1 15

BEGIN//모든 처리 전에 BEGIN 뒤에 있 는
[mq@mq shell]$ awk 'BEGIN{printf "This is a transcript
"
}{printf $2 "\t" $6 "
"
}' student.txt This is a transcript Name Average Liming 87.66 Sc 85.66 Gao 91.66
[mq@mq ~]$ awk '{FS=":"}{print $1 "\t" $3}' /etc/passwd
root:x:0:0:root:/root:/bin/bash 
bin 1
daemon  2
adm 3
lp  4
sync    5
shutdown    6
halt    7
mail    8

[mq@mq ~]$ awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd  //  awk            
root    0
bin 1
daemon  2
adm 3
lp  4
sync    5
shutdown    6
halt    7
mail    8
operator    11
//            PID
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"|awk 'BEGIN {FS=":"}{printf $1 "\t" $3 "
"}' root 0 mq 1000

END 는 BEGIN 과 반대 입 니 다.
[mq@mq shell]$ awk 'END{printf "end
"}{printf $1 "\t" $6 "
"}' student.txt ID Average 1 87.66 2 85.66 3 91.66 end [mq@mq sxhell]$ cat student.txt|grep -v Name|awk '$6>=87 {printf $2 "
"}' Liming Gao

sed
경량급 스 트림 편집기: 명령 결 과 를 파이프 문자 로 편집 sed 옵션 '동작' 파일 이름 옵션 - n - e - i 동작: a\추가 c\줄 교체 i: 삽입 d: 삭제 p: 인쇄 s: 문자열 교체 줄 출력:
[mq@mq shell]$ ls
a.txt     shell2.sh  shell5.sh  shellrc      test      wo.txt
mq        shell3.sh  shell6.sh  shell.sh     test.txt
oper1.sh  shell4.sh  shell7.sh  student.txt  testx.sh
[mq@mq shell]$ sed '2p' student.txt 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66
[mq@mq shell]$ sed -n '2p' student.txt 
1   Liming  82  95  86  87.66
[mq@mq shell]$ df -h|sed -n '2p'
devtmpfs                 1.9G     0  1.9G    0% /dev

[mq@mq shell]$ cat gtest 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66
[mq@mq shell]$ sed '2,4d' gtest   //  -i      ,       
ID  Name    PHP Linux   Mysql   Average
[mq@mq shell]$ cat gtest 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66
[mq@mq shell]$ sed -i  '2,4d' gtest 
[mq@mq shell]$ cat gtest 
ID  Name    PHP Linux   Mysql   Average
[mq@mq shell]$ sed '2a hello' gtest 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
hello
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66

[mq@mq shell]$ sed '2i hello \       //\             
> world ' gtest
ID  Name    PHP Linux   Mysql   Average
hello 
world 
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66


         
[mq@mq shell]$  cat student.txt 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66
[mq@mq shell]$ sed '3s/74/99/g' student.txt 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  99  96  87  85.66
3   Gao 99  83  93  91.66

     (-i)   
[mq@mq shell]$ cat gtest 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  74  96  87  85.66
3   Gao 99  83  93  91.66
[mq@mq shell]$ sed -i '3s/74/99/g' gtest 
[mq@mq shell]$ cat gtest 
ID  Name    PHP Linux   Mysql   Average
1   Liming  82  95  86  87.66
2   Sc  99  96  87  85.66
3   Gao 99  83  93  91.66

3. 문자 처리 명령 정렬 명령 sort 옵션 파일 이름
 sort /etc/passwd  //   a-z    
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
mq:x:1000:1000::/home/hp:/bin/bash
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
nobody:x:99:99:Nobody:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
rater:x:1001:1001::/home/rater:/bin/bash
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

[root@_240_centos ~]#sort -r /etc/passwd  //   z-a  
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rater:x:1001:1001::/home/rater:/bin/bash
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
mq:x:1000:1000::/home/hp:/bin/bash
halt:x:7:0:halt:/sbin:/sbin/halt
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin


----------
[root@VM_47_240_centos ~]# sort -t ":" -k 3,3 /etc/passwd   //         3 ,                 , 10   2  
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
hp:x:1000:1000::/home/hp:/bin/bash
rater:x:1001:1001::/home/rater:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
adm:x:3:4:adm:/var/adm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
----------
[root@VM_47_240_centos ~]# sort  -nt ":" -k 3,3 /etc/passwd  //          
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
hp:x:1000:1000::/home/hp:/bin/bash
rater:x:1001:1001::/home/rater:/bin/bash

통계 명령 wc 옵션 파일 이름 옵션
옵션
역할.
-l
행 수만 집계 하 다
-w
단어 수 를 집계 하 다
-m
통계 문자 수
[root@VM_47_240_centos ~]# wc -l /etc/passwd
34 /etc/passwd
[root@VM_47_240_centos ~]# df -h |wc -m
325
[root@VM_47_240_centos ~]# df -h |wc -w
43

4. 조건 판단
옵션
역할.
-d
파일 이 존재 하 는 지, 디 렉 터 리 파일 인지 여부
-e
파일 존재 여부 판단
-f
파일 이 존재 하 는 지, 일반 파일 인지 여부
-r
파일 이 존재 하 는 지, 쓰기 권한 이 있 는 지 여부
-w
파일 이 존재 하 는 지, 파일 을 쓸 수 있 는 지 여부
-x
파일 이 존재 하 는 지, 실행 가능 한 지 여부
[root@VM_47_240_centos ~]# test -e /root/install.log
[root@VM_47_240_centos ~]# echo $?
1  //         
[root@VM_47_240_centos ~]# test -e /etc/passwd
[root@VM_47_240_centos ~]# echo $?
0  //   
[root@VM_47_240_centos ~]# [ -e /etc/passwd ]
[root@VM_47_240_centos ~]# echo $?
0
[mq@mq ~]$ [ -e /home/mq ]
[mq@mq ~]$ echo $?
0
[mq@mq ~]$ [ -e /home/h ]
[mq@mq ~]$ echo $?
1


  root     
[root@VM_47_240_centos ~]# [ -d /root ] && echo "yes"
yes

존재 여 부 를 판단 하고 쓰기 권한 이 있 습 니 다.
//            
[root@VM_47_240_centos ~]# [ -w /etc/passwd ]&& echo "yes"||echo "no"
yes
[root@VM_47_240_centos ~]# [ -w /etc/student ]&& echo "yes"||echo "no"
no

두 파일 비교
옵션
역할.
파일 1 - nt 파일 2
파일 1 대 파일 2 새
파일 1 - ot 파일 2
파일 1 은 파일 2 보다 낡 았 다.
파일 1 - et 파일 2
파일 1 과 파일 2Inode 번호 가 일치 하여 하 드 링크 를 판단 하 는 데 사 용 됩 니 다.
두 정수 비교 (수치 처리)
옵션
역할.
정수 1 - eq 정수 2
정수 1 이 정수 2 와 같 는 지 판단 하 다.
정수 1 - ne 정수 2
정수 1 이 정수 2 와 같 지 않 은 지 판단 하 다.
정수 1 - gt 정수 2
정수 1 이 정수 2 보다 큰 지 판단 하 다.
정수 1 - lt 정수 2
정수 1 이 정수 2 보다 작은 지 판단 하 다.
정수 1 - ge 정수 2
정수 1 이 정수 2 보다 큰 지 판단 하 다.
정수 1 - le 정수 2
정수 1 이 정수 2 보다 작 을 지 판단 하 다.
[root@VM_47_240_centos ~]# [ 23 -gt 22 ]&&echo "yes"||echo no
yes

5 문자열 의 판단
테스트 옵션
역할.
- z 문자열
문자열 이 비어 있 는 지 판단 하기
- n 문자열
문자열 이 비어 있 는 지 여 부 를 판단 합 니 다.
문자열 1 = = 문자열 2
문자열 1 이 문자열 2 와 같은 지 판단 하기
문자열 1! =문자열 2
문자열 1 이 문자열 2 와 같 지 않 은 지 판단 하기
//   name      
[root@VM_47_240_centos ~]# [ -z "$name" ]&&echo "NULL"||echo "no"
no


[root@VM_47_240_centos mq]# ./shell.sh
!=
[root@VM_47_240_centos mq]# cat shell.sh
#!/bin/bash
aa=1//    
bb=2
#  aa      bb  ,     !=
[ "$aa" == "$bb" ] && echo "="||echo "!="

다 중 조건 판단
옵션
역할.
판단 1 - a 판단 2
논리 와 판단 1 과 판단 2 가 모두 성립 되 어야 최종 결과 가 진실 된다.
판단 1 - o 판단 2
논리 나 판단 이 성립 되면 결 과 는 진실 이다.
!판 가름
논리
[root@VM_47_240_centos ~]# [ -n "aa" -a 24 -gt 26 ]&& echo "yes"||echo no
no         aa     24  26    no  
[root@VM_47_240_centos ~]# [ -n "aa" -a 27 -gt 26 ]&& echo "yes"||echo no
yes  

5. 흐름 제어
if
if [조건];then 프로그램 fi 또는 if [조건 판단 식] then 프로그램 fi
case
for
while######xxxx

좋은 웹페이지 즐겨찾기