IT 이야기/Linux 셸 스크립트137 [Linux 셸 스크립트] 변환처리 - 014 값이 정수인지 확인해서 계산하기 1. 사용 명령어 (1) test (2) expr 2. 키워드 & 사용처 (1) 키워드 숫자 확인, 인수 확인, 에러 처리 (2) 사용처 expr 명령어 등으로 계산하기 전에 변수값이 정수인지 확인하고 싶을 때 사용합니다. 3. 실행 예제 $ ./int-check.sh 100a Argument is not Integer. $ ./int-check.sh 100 Argument is Integer. 110 4. 스크립트 #!/bin/sh # 인수가 정수인지 확인 test "$1" -eq 0 2>/dev/null ① if [ $? -lt 2 ]; then ② echo "Argument is Integer." expr 10 + $1 else echo "Argument is not Integer." exit 1 .. 2021. 3. 5. [Linux 셸 스크립트] 변환처리 - 013 HTML 파일에서 특정 속성값 얻기 1. 사용 명령어 (1) expr 2. 키워드 & 사용처 (1) 키워드 패턴 매치, 문자열, HTML, 속성 (2) 사용처 변수 내부 문자열에서 특정 패턴과 일치하는 부분을 추출할 때 사용합니다. 3. 실행 예제 $ ./expr-match.sh /about/ /sitemap/ /plan1.html http://www.example.org/ 4. 스크립트 #!/bin/sh quote="[\"']" ① match="[^\"']*" ② while read line do href=$(expr "$line" : ".*href=${quote}\(${match}\)${quote}.*) ③ if [ $? -eq 0 ]; then echo $href fi done < index.tml 5. 해설 이 스크립트는 현대 디렉.. 2021. 3. 5. [Linux 셸 스크립트] 변환처리 - 012 지역 변수를 함수 안에 정의해서 호출한 곳의 변수가 변경되지 않게 하기 1. 사용 명령어 (1) ls (2) local 2. 키워드 & 사용처 (1) 키워드 지역 변수, 전역 변수, 스코프 (2) 사용처 함수 내부에서 변수를 다룰 때 호출한 곳에 영향을 주지 않도록 지역 변수로 정의하고 싶을 때 사용합니다. 3. 실행 예제 $ ./local-var.sh directory: /home/park/logdir 20210303.log 20210304.log directory: /var/tmp tmp.dattmp.3113 4. 스크립트 #!/bin/sh DIR=/var/tmp ls_home() { # 변수 DIR을 함수 내부 변수로 정의 local DIR ① DIR=~/$1 ② echo "directory: $DIR" ls $DIR } ls_home logdir ③ ls $DIR ④.. 2021. 3. 5. [Linux 셸 스크립트] 변환처리 - 011 실행 시 변수값이 비어 있을 때 기본값을 정의해서 설정하기 1. 사용 명령어 (1) cp (2) tar 2. 키워드 & 사용처 (1) 키워드 미정의, 기본값 (2) 사용처 환경 변수가 설정되었으면 그 값을 쓰고 설정되지 않았으면 스크립트에서 정한 기본값을 사용하고 싶을때 사용합니다. 3. 실행 예제 $ ./var-parameter.sh 4. 스크립트 #!/bin/sh cp largefile.tar.gz ${TMPDIR:=/tmp} ① cd $TMPDIR tar xzf largefile.tar.gz echo "Extract files to $TMPDIR." 5. 해설 이 스크립트는 변수 TMPDIR 값을 확인해서 설정값이 있으면 그 값을, 설정되어 있지 않거나 빈 문자열이면 /tmp를 작업 디렉터리로해서 아카이브 파일을 풉니다. ①에 있는 :=는 변수에 값이 설정.. 2021. 3. 4. [Linux 셸 스크립트] 사용자 인터페이스 - 010 파일 압축 시 실행 상태를 표시하는 진행바 표시하기 1. 사용 명령어 (1) pv (2) tar (3) gzip 2. 키워드 & 사용처 (1) 키워드 압축, 진행바 (2) 사용처 시간이 오래 걸리는 파일 처리 등에서 화면에 진행 상태를 나타내고 싶을 때 사용합니다. 3. 실행 예제 $ ./tar-pv.sh 693MB 18:30:32 [16.4MB/s] [ ] 4. 스크립트 #!/bin/sh DATA_DIR=myapp/datadir cd $DATA_DIR ① tar cvf - bigfile1.data bigfile2.dat | pv | gzip > archive.tar.gz ② 5. 해설 이 스크립트는 tar 명령어와 gzip 명령어로 큰 파일을 아카이브할 때 처리 진행 상태를 pv 명령어로 표시합니다. tar 명령어로 현재 처리 중인 파일을 표시하려면 다.. 2021. 3. 4. [Linux 셸 스크립트] 사용자 인터페이스 - 009 달력을 이용해 특정 날짜의 로그 파일 삭제하기 1. 사용 명령어 (1) dialog (2) awk (3) rm 2. 키워드 & 사용처 (1) 키워드 다이얼로그, 달력, 대화형, 선택 (2) 사용처 날짜를 지정하는 대화식 달력을 표시해서 선택하고 싶을 때 사용합니다. 3. 실행 예제 $ ./dialog-calendar.sh 4. 스크립트 #!/bin/sh LOG_DIR=/myapp/ap1/log # dialog 명령어로 달력 출력 # 선택한 날짜는 표준 에러 출력이므로 임시 파일에 리다이렉트 dialog --calendar "Select Date" 2 60 2> cal.tmp ① # 달력 기능은 일/월/년 형식으로 출력되므로 년월일로 변경 date_str=$(awk -F / '{print $2$2$1}' cal.tmp ② # 취소되면 임시 파일을 삭제.. 2021. 3. 3. [Linux 셸 스크립트] 사용자 인터페이스 - 008 표시 문자색 변경하기 1. 사용 명령어 (1) echo 2. 키워드 & 사용처 (1) 키워드 터미널, 색상 (2) 사용처 메시지 표시에 문자색을 변경하거나 반전시키는 등 주의나 강조를 하고 싶을 때 사용합니다. 3. 실행 예제 $ ./color.sh Script Start. Importan Message 2021. 3. 3. [Linux 셸 스크립트] 사용자 인터페이스 - 007 선택식 메뉴를 표시해서 입력된 숫자값 처리하기 1. 사용 명령어 (1) read (2) case 2. 키워드 & 사용처 (1) 키워드 표준 입력, 키보드 (2) 사용처 키보드로 입력한 값을 사용해서 대화식 처리를 하고 싶을 때 사용합니다. 3. 실행 예제 $ ./select.sh Menu : 1) list file 2) current directory 3) exit 2 /home/park/ Menu : 1) list file 2) current directory 3) exit 3 4. 스크립트 #!/bin/sh while : do echo "Menu :" echo "1) list file" echo "2) current directory" echo "3) exit" read number ① case $number in ② 1) ls ;; 2) pwd.. 2021. 3. 3. [Linux 셸 스크립트] 사용자 인터페이스 - 006 파일을 읽어서 처리할 때 키보드에서 입력받기 1. 사용 명령어 (1) tty (2) read 2. 키워드 & 사용처 (1) 키워드 표준 입력, 키보드, 외부 파일 (2) 사용처 read 명령어로 파일에 읽어들이는 처리 도중에 read 명령어로 키보드에서 입력받고 싶을 때 사용합니다. 3. 실행 예제 $ ./read-redirect.sh Input Target Directory : /home/park/test 2021. 3. 3. [Linux 셸 스크립트] 사용자 인터페이스 - 005 사용자 키 입력을 한 글자만 받기(Enter 키 불필요) 1. 사용 명령어 (1) stty (2) case (3) dd 2. 키워드 & 사용처 (1) 키워드 키보드, 입력, 줄바꿈, Enter (2) 사용처 키보드에서 글자 하나가 입력되면 Enter 입력 없이 처리를 속행하고 싶을 때 사용합니다. 3. 실행 예제 $ ./getchar.sh Type Your Answer [y/n] : y Input : Yes 4. 스크립트 #!/bin/sh echo-n "Type Your Answer [y/n] : " # 현재 터미널 설정을 셸 변수 tty_state에 백업하고 터미널을 raw 설정함 tty_state=$(stty -g) ① stty raw ② # 키보드에서 문자 하나 읽기 char=$(dd bs=1 count=1 2> dev/null ③ # 터미널 설정을 원래.. 2021. 3. 2. 이전 1 ··· 10 11 12 13 14 다음