728x90

Linux/쉘스크립트 13

shift 명령어

Shift 명령어 Shift 명령은 커맨드라인에 인수로 받아드린 값을 위치지정 매개변수에 다시 할당하여 커맨드라인 인수를 통해 증가 할 수 있도록 합니다. Shift n 을 한후 * 에 있는 모든 매개 변수가 n 위치만큼 왼쪽으로 이동하고 #는 n만큼 감소합니다. n의 초기값은 1입니다. shift 명령은 매개변수 0에 영향을 주지 않습니다. 일단 이동을 완료했으면, 명령줄을 벗어나 자리 이동된 인수들은 분실됩니다. 나중에 그것들을 프로그램에서 참조할 필요가 있으면, shift를 실행하기 전에 그 것들을 저장해야 합니다. 예제 #!/bin/sh orig_args=$* echo "$# 개의 인수를 입력받았습니다." echo "인수들 : $*" echo "shift 2를 실행합니다." shift 2 echo..

(bash shell) select 문

select 문 메뉴를 생성할 수 있는 루프 명령 list에 지정한 항목을 선택 가능한 메뉴로 만들어 화면에 출력 각 항목은 순서대로 번호가 붙여짐 사용자 입력을 위한 프롬프트로는 PS3 환경 변수에 저장된 문자열을 사용 사용자가 입력한 값은 select와 in 사이에 지정한 변수에 저장됨 형식 select 변수 in list do 명령 done 스크립트 예 $ cat -n test_select 1 #!/bin/bash 2 # 3 # test select 4 # 5 6 PS3=“Input command(1-3) :” 7 8 select cmd in pwd date quit # pwd=1, date=2, quit=3 9 do 10 case $cmd in 11 pwd) pwd ;; 12 date) date ..

(Bash Shell) while문과 until문 예제

while문 - 주어진 조건이 참일경우 반복 형식 - while [조건문] do 실행명령 done 예제 스크립트 cnt 변수에 1을 대입하고 10보다 작을때까지 반복한다 숫자계산할때 expr명령어을 쓴다. #!/bin/bash cnt=1 while [ $cnt -lt 10 ] do echo "count" cnt=`expr $cnt + 1` done 결과 # ./while1.sh count count count count count count count count count #!/bin/bash echo "your name is: " read name while [ "$name" != "tom" ]; do echo "not name! your name is: " read name done ---------..

(AWK) 명령어 문법

AWK 명령어 문법 $ awk [옵션] 'pattern { action }' [파일|변수값] awk 옵션 설명 -u 버퍼를 사용하지 않고 출력한다. -F 확장된 정규 표현식으로 필드구분자를 지정한다, 다중 필드 구분자 사용 가능하다. awk -F 단일로 사용시 ':' 를 필드구분자로 사용 awk -F'[ :\t]' 다중 필드구분자 ':'와 tab을 필드구분자로 사용 -v 스크립트를 실행하기 전에 미리 변수를 지정하여 준다. -f awk 명령 스크립트를 파일에서 읽어온다. awk 동작 원리 - 패턴(pattern) 과 액션(action) awk는 파일 또는 파이프를 통해 입력 라인을 얻어와 $0라는 내부 변수에 라인을 입력한다. 각 라인은 레코드라고 부르고, newline(개행)에 의해 구분되다. 이때 패..

(shell script)expr & bc

expr & bc 명령어 쉘에서는 숫자와 문자를 구분하지 않기 때문에 여타 프로그래밍 언어 처럼 숫자 연산이 간단하지 않다. 쉘에서 숫자를 연산하는 방법은 대표적으로 expr 와 bc 가 있다. expr은 bash 내장 명령어로 정수만 연산 가능하다. bc는 복잡한 공학용 산술과 실수 계산이 가능하다. 여기까지 보면, 차라리 bc만 쓰면 될것을 굳이 expr을 알아야 하는지 의문이겠지만, 정수 연산이 많은 프로그래밍을 할 경우 내장 명령어인 expr을 사용하는것이 속도면에서 효율적이기 때문이다. expr 명령어 expr 명령은 정수 계산을 하기 위해 사용되는 명령이다. 계산식을 쓸 때 연산기호와 정수 사이 반드시 공백으로 띄어쓰기를 해야 한다는 주의 점이 있다. $ expr 4 \* 3 12 $ expr..

쉘스크립트 예제

구구단 출력 BASH #!/usr/bin/bash for i in {2..9}; do # 2에서 9까지 레인지 리스트를 순회 for j in {1..9}; do # 1에서 9까지 레인지 리스트를 순회 echo "$i * $j = $((i*j))" # $(( )) 는 괄호안의 문자를 산술 처리 해준다. done done 프로그램의 실행시간 측정 아래의 프로그램은 인자로 주어진 명령을 실행하고 걸린시간을 나노초 단위로 측정한다. BASH #!/bin/bash # 만일 사용자가 인자를 주지 않았을 경우.. ($#는 인자의 모든 갯수) if [ $# -eq 0 ]; then echo "Input the filename, please..." exit 0 # 스크립트 종료 fit Command=$1 # 인자를 변수..

(shell script) 문자열 패턴 비교

문자열 패턴 비교 패턴 비교는 일종의 문자열을 연산하는 것으로 특정한 pattern을 놓고 변수의 문자열 값이 일부분이라도 이 패턴과 일치하는지 검사할 때 쓰인다. 이 패턴에는 와일드카드 문자 ( *, ?, [ ] 를 포함한 문자 세트)를 포함해도 된다. ${#var} 변수 var가 가지는 문자열의 길이를 구한다. ${var:-word} 1. 변수 var의 값이 null이 아니면 : var의 값을 반환, var의 값은 변하지 않는다. 2. 변수 var의 값이 null이면 : word의 값을 반환, var의 값은 변하지 않는다. ${var:=word} 1. 변수 var의 값이 null이 아니면 : var의 값을 반환, var의 값은 변하지 않는다. 2. 변수 var의 값이 null이면 : word의 값을 ..

쉘 배열문이란?

쉘 배열문 배열 생성 / 추가 BASH #!/bin/bash # 배열의 크기 지정없이 배열 변수 선언 # 굳이 'declare -a' 명령으로 선언하지 않아도 바로 배열 변수 사용 가능함 declare -a array arr=("test1" "test2" "test3") # 배열 선언 및 지정 echo ${arr[0]} # test1 # 기존 배열에 1개의 배열 값 추가 3가지 방법 arr[3]="test4" arr+=("test5") arr[${#arr[@]}]="test6" # 배열 길이를 인덱스로 사용해 push echo ${arr[@]} # arr의 모든 데이터 출력 echo ${arr[*]} # arr의 모든 데이터 출력 echo ${#arr[@]} # arr 배열 길이 출력 echo ${arr..

쉘 조건문 - if문

쉘 조건문 if 문 배쉬의 if문의 특이한 점은 fi 와 대괄호[ ] 이다. 여타 언어와 달리 중괄호를 안쓰기 떄문에 fi로 if문의 끝을 알려주어야 하며, 주의해야할 점은 if문 뒤에 나오는 대괄호 [ ] 와 조건식 사이에는 반드시 공백이 존재해야 한다. if [ 값1 조건식 값2 ] then 수행1 else 수행2 fi # 가독성 좋기 위해 then을 if [] 와 붙여쓰려면 반드시 세미콜론 ; 을 써야한다. if [ 값1 조건식 값2 ]; then 수행1 else 수행2 fi 비교 연산 문자1 = 문자2 # 문자1 과 문자2가 일치 (sql같이 = 하나만 써도 일치로 인식) 문자1 == 문자2 # 문자1 과 문자2가 일치 문자1 != 문자2 # 문자1 과 문자2가 일치하지 않음 -z 문자 # 문자가..

728x90