Bashscript | 2

명상록·2023년 2월 21일
0

shell script

목록 보기
5/5
  • 예약 변수

    1. 시스템 환경 변수

    2. 시스템에서 이미 사용 중인 예약 변수를 통해 스크립트를 짜볼텐데 이는 set, set | less, set | grep [name]을 이용해 알아볼 수 있습니다.

      	#!/usr/bin/bash
         
      	echo "user :$USER"		#로그인이 된 사용자명 출력
      	echo "uid : $UID"		#해당 사용자의 UID 출력
      	echo "home : $HOME"		#해당 사용자의 홈 디렉토리 출력

      root로 작업 중이기에 결과물은 이렇게 나옵니다.

      	user :root
      	uid : 0
      	home : /root	
      
    3. 사용자 환경 변수

    4. 명령어를 사용자 변수 안에 넣어서 사용해보았고 $()보다는 back quote를 사용하는 것이 편해서 그렇게 작성해보았습니다.

      	#!/usr/bin/bash
      
      	TODAY=`date`	#TODAY=$(date) - 다른 표현식
      	LIST=`ls -al`	#LIST=$(ls -al) 
      
      	echo "TODAY : $TODAY"
      	echo "LIST : $LIST"

      back quote는 Tab 위에 있으며 '(작은 따옴표) 입력시에는 문자열로 인식하게 됩니다.

      	TODAY : 2022. 09. 15. () 17:06:10 KST
      	LIST : 합계 28
      	drwxr-xr-x.  2 root root  103  915 16:51 .
      	dr-xr-x---. 17 root root 4096  914 16:26 ..
      	-rwxr-xr-x.  1 root root   36  914 16:29 exp1.sh
      	-rwxr-xr-x.  1 root root  303  914 16:56 exp2.sh
      	-rwxr-xr-x.  1 root root  179  914 18:04 exp3.sh
      	-rwxr-xr-x.  1 root root   74  915 16:15 exp4.sh
      	-rwxr-xr-x.  1 root root   87  915 16:51 exp5.sh
      	-rwxr-xr-x.  1 root root   37  914 18:09 export_test.sh
      

  • 매개 변수

  • 종류설명
    $0실행된 쉘 스크립트명
    $1스크립트에 넘겨진 첫 번째 인자 값
    $2스크립트에 넘겨진 두 번째 인자 값
    $#스크립트에 전달된 인자의 수
    $*모든 인자를 모아 하나로 처리
    $@모든 인자를 각각 처리
    $!마지막으로 실행한 백그라운드 프로세스 ID
    $$쉘 스크립트의 PID
    $?실행한 뒤의 반환 값(bg 제외) 0은 성공 1은 실패

    스크립트 파일을 실행할 때 인자 값을 함께 주어 매개 변수를 사용해보겠습니다.

    	#!/bin/bash
     
    	echo "script name : ${0}"
    	echo "매개 변수 갯수 : ${#}"
    	echo "전체 매개 변수 값 : ${*}"	#인자들을 하나의 변수로 묶어서 호출 
    	echo "전체 매개 변수 값 : ${@}"	#"(쌍따옴표)로 변수를 묶으면 다른 결과를 얻음
    	echo "첫번 째 매개 변수 : ${1}"
    	echo "두번 째 매개 변수 : ${2}"

    쉘 실행과 동시에 변수 값을 지정해주고 결과를 살펴보겠습니다.

     	[root@localhost example]# ./exp6.sh l e c t u r e s
    	script name : ./exp6.sh
    	매개 변수 갯수 : 8
    	전체 매개 변수 값 : l e c t u r e s
    	전체 매개 변수 값 : l e c t u r e s
    	첫번 째 매개 변수 : l
    	두번 째 매개 변수 : e
  • 연산자

    1. 정수 연산

    2. 다양한 방법으로 쉘 스크립트 연산을 해볼텐데 독자에 맞는 방법을 찾았음 좋겠습니다.
      	#!/usr/bin/bash
      
      	value1=98
      	value2=45
      	plus=$[$value1 + $value2] 
      	minus=$(($value1 + $value2))
       	mul=`expr $value1 \* $value2`	# 곱셈에는 \* 를 이용한다.
       	let div=value1/value2 			
        
      	echo "plus:     ${plus}"
      	echo "minus:    ${minus}"
      	echo "mul:      ${mul}"
      	echo "div:		$div" 

      	plus:     143
      	minus:    143
      	mul:      4410
      	div:      2	

      각기 방법은 달랐지만 정상적인 값을 출력하는 것을 볼 수 있습니다.

    3. 소수 연산

    4. 2.1. bc 명령을 통해 소수점 자리 계산이 가능한데 sh에도 적용 가능합니다.
      	$ bc
      	bc 1.07.1
      	Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
      	This is free software with ABSOLUTELY NO WARRANTY.
      	For details type `warranty'. #여기까지 저작권 명시
      	scale=4		#소수점 자리 명시
      	3.14 / 5
      	.6280
      	quit		#quit로 bc 탈출

      2.2 쉘 스크립트로 수행하는 bc와 제곱 연산

      	#!/usr/bin/bash
      
      	var1=3.1498
      	var2=5
      
      	result=$(echo "scale=4; $var1 / $var2" | bc) #소수점 나누기
      	echo "result : $result"
      
      	result2=$(echo "scale=4; $var1 ^ 5" | bc)	#제곱 연산
      	echo "result2 : $result2"
      

      scale이 없다면 기본적으로 정수 결과가 나오고, scale=N을 통해 지정 소수점까지 결과를 확인할 수 있습니다.

      	result : .6299
      	result2 : 310.0379
profile
등불은 꺼질 때까지 계속해서 환하게 빛을 비춘다.

0개의 댓글