본문 바로가기

전체 글

(257)
17. sh/Bash 스타트업 파일 /bin/bash The bash executable /etc/profile The systemwide initialization file, executed for login shells ~/.bash_profile The personal initialization file, executed for login shells ~/.bashrc The individual per-interactive-shell startup file ~/.bash_logout The individual login shell cleanup file, executed when a login shell exits ~/.inputrc Individual readline initialization file
16. 변수처리 변수 기본값 설정 널 명령어 ( : ) 와 등호 ( = ) 를 사용하여 환경 변수 값이 설정되어 있으면 그 값을 사용하고 설정되지 않은 경우 스크립트에서 정한 기본값을 사용할 수 있다. #!/bin/sh # param.sh cp largefile.tar.gz $[TMPDIR:=/tmp] cd $TMPDIR $ ./param.sh Extract files to /var/tmp 지역변수 설정 함수 내부에서 변수를 다룰 때 호출한 곳에 영향을 주지 않도록 지역 변수로 정의하고자 하면 local 이라는 지시어를 같이 사용하면 된다. #!/bin/sh #local.sh DIR=/var/tmp function ls_home() { local DIR DIR=/$1 echo "directory : $DIR" } $ ...
15. stty ( 암호입력 ) 사용자가 암호를 입력하는 처리에서 입력된 문자열을 화면에 표시하고 싶지 않은 경우 터미널의 환경 설정을 위해 존재하는 명령어 stty 를 사용하여 에코백 (stty -echo) 으로 화면에 표시되지 않게 막고 다시 에코온 (stty echo) 해주면 된다. 실행 예제 $ ./pass_wget.sh Password : 스크립트 #!/bin/sh hostname=localhost echo -n "Username: " read userName echo -n "Password:" stty -echo read password stty echo wget -q --password="$password" "ftp://${userName}@{hostname}/filename.txt"
14. read ( 사용자 키입력 받기 ) 키보드에서 입력받은 값을 써서 대화형 처리를 하고 싶을 때 read 명령을 사용하면 된다. 단순히 문자를 받을수 있고 case 문을 활용하면 입력값에 대한 옵션 처리도 가능하다. 실행 예제 1 $ ./read.sh Enter your ID : guest Now your ID is guest 스크립트 1 #!/bin/sh echo -n "Enter your ID: " read id echo "Now your ID is $id" 실행 예제 2 $ ./select.sh Menu: 1) list file 2) current directory 3) exit 2 /home/user/shell_script 스크립트 2 #!/bin/sh while : do echo "Menu:" echo "1) list file" e..
13. getops ( 옵션처리 ) 쉘 스크립트를 실행하면 명령어와 옵션 값들은 자동으로 쉘 변수 $0 .. N 으로 저장된다. 그리고 -a , -p 는 명령행 옵션으로 이를 처리하기 위해서는 getopt 함수를 OPTARG , OPTIND 와 함께 사용하면 된다. OPTARG 는 getops 했을 때 붙어있는 인자값이다. OPTIND 는 OPTIND 는 getopt 로 처리하고 남은 다음 처리할 인덱스 번호가 된다. 실행 예제 $ ./getopts.sh -a -p 'testArg' /home/user1/docs 스크립트 #!/bin/sh a_flag = 0 separator = "" # getopt 명령을 줄 때 처리하고자 하는 인자를 입력하면 된다. # a 옵션은 인수를 받지 않는다. # p 옵션은 인수를 받는다. # 인수를 받을때는 ..
12. 명령문 인식 eval 함수 문자열을 명령문으로 인식하고 실행하게 만든다. # eval.sh #!/bin/sh str="ls -al" eval $str exit 0 $(명령어) 리눅스 명령어를 결과로 사용하기 위해서는 $(명령어) 형식을 사용한다. # set.sh #!/bin/sh echo "오늘 날짜는 $(date) 입니다" exit 0 $sh set.sh 오늘 날짜는 2018. 02. 26 (화) 21:24:08 KST 입니다.
11. 파일확인 파일 확인 연산자 파일을 확인하는 구문은 많이 사용된다. 배워둬서 나쁠건 없다. # file_check.sh #!/bin/sh fname=/lib/systemd/system/cron.service if [ -e $fname ] then head -5 $fname else echo "cron 서버가 설치되지 않았습니다." fi exit 0
10. 비교 비교 문자열 비교가 숫자 비교처럼 보이고 숫자 비교가 문자 비교처럼 보이는데 어찌됐던 문법이니깐.. # if_test.sh #!/bin/sh if [ 100 eq 200 ] then echo "100 = 200" else echo "100 != 200" fi exit 0 $> sh if_test.sh 100 != 200