시스템에서 이미 사용 중인 예약 변수를 통해 스크립트를 짜볼텐데 이는 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
명령어를 사용자 변수 안에 넣어서 사용해보았고 $()보다는 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 9월 15 16:51 .
dr-xr-x---. 17 root root 4096 9월 14 16:26 ..
-rwxr-xr-x. 1 root root 36 9월 14 16:29 exp1.sh
-rwxr-xr-x. 1 root root 303 9월 14 16:56 exp2.sh
-rwxr-xr-x. 1 root root 179 9월 14 18:04 exp3.sh
-rwxr-xr-x. 1 root root 74 9월 15 16:15 exp4.sh
-rwxr-xr-x. 1 root root 87 9월 15 16:51 exp5.sh
-rwxr-xr-x. 1 root root 37 9월 14 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
#!/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
각기 방법은 달랐지만 정상적인 값을 출력하는 것을 볼 수 있습니다.
$ 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