[클라우드 With리눅스/쉘프로그래밍(2) - 파일실행,명령치환,계산하기]

SooYeon Yeon·2022년 8월 22일

클라우드 With리눅스

목록 보기
27/39

파일 실행

  1. bash / sh
[root@sooyeon 0726]# /bin/bash test1.sh
hello all
[root@sooyeon 0726]# bash test1.sh
hello all
[root@sooyeon 0726]# sh test1.sh
hello all
  • bash : $PATH에 포함되어있기 때문에 bash [파일이름]으로 실행할 수 있음
  • sh : /bin/bash에 링크가 걸려있기 때문에 bash를 실행하는 것과 동일
  1. chmod , ./

파일에 실행권한을 부여하고 동작하게 하고 싶다면

[root@sooyeon 0726]# chmod u+x test1.sh
[root@sooyeon 0726]# ./test1.sh
hello all

명령 치환하기

명령의 결과를 변수에 담아 활용

  1. ` 이용
[root@sooyeon 0726]# test1=`date`
[root@sooyeon 0726]# echo $test1
Tue Jul 26 10:07:25 KST 2022
  1. ( )소괄호 이용
[root@sooyeon 0726]# test2=$(date)
[root@sooyeon 0726]# echo $test2
Tue Jul 26 10:07:42 KST 2022

[root@sooyeon 0726]# test1=$(date +%y%m%d%H%M)
[root@sooyeon 0726]# echo $test1
2207261009

명령의 결과를 파일로 담아 활용

[root@sooyeon 0726]# ls > test1.txt
[root@sooyeon 0726]# cat test1.txt
test1.sh
test1.txt
  • 임시 파일 활용하기
  • mktemp : 임시파일 만들기
[root@sooyeon 0726]# mktemp /tmp/hello.XXXXXX
/tmp/hello.EbWtr0
[root@sooyeon 0726]# test1=$(mktemp /tmp/hello.XXXXXX)
[root@sooyeon 0726]# echo $test1
/tmp/hello.sawAna
[root@sooyeon 0726]# test2=$(mktemp /tmp/hello.XXX)
[root@sooyeon 0726]# echo $test2
/tmp/hello.coB

3~6자리로 사용함

계산하기

  1. expr 사용
# 띄어쓰기를 해야 함 
[root@sooyeon 0726]# expr 1 + 2
3

# 나머지 0 출력
[root@sooyeon 0726]# expr 10 % 2
0

# *를 패턴과 혼동할 수 있으므로 계산이 되지 않음.
[root@sooyeon 0726]# expr 10 * 2
expr: syntax error

# 
[root@sooyeon 0726]# expr 10 \* 2
20
  • +,-,/,%는 되는데 곱하기를 할 때는 *로 붙여야 한다.
  • 모든 배포판 리눅스에서 \를 붙여야하는 것은 아니다.
# 계산 결과 화면에 출력
[root@sooyeon 0726]# res1=`expr 10 + 2`
[root@sooyeon 0726]# echo $res1
12

# $( ) 안에는 명령실행하는 것
[root@sooyeon 0726]# res2=$(expr 10 + 2)
[root@sooyeon 0726]# echo $res2
12

# $[ ] 안에는 계산식
# 출력이 아니라 결과값을 명령으로 실행하게 하므로 반드시 변수와 함께 사용해야 함
[root@sooyeon 0726]# res3=$[ 10 + 2 ]
[root@sooyeon 0726]# echo $res3
12
  • $ ( 명령 실행 )
  • $ [ 계산식 ]
  1. bc 계산기 (bash calculator)
  • 실수 계산을 위해서는 bc 계산기가 필요
[root@sooyeon 0726]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1.1 + 2.2
3.3
3.14 * (1.1 + 2.2)
10.36
quit
  • bc -q : 앞에 설명 뜨는 것 없이 바로 실행
  • scale : 소수 몇째까지 표현하는 지 (기본은 0으로 소수점 x)
[root@sooyeon 0726]# bc -q
5/4
1
scale=2
5/4
1.25
scale=5
5/4
1.25000
  • 변수 활용
var1=10
var1 * 4
40
print var1
10

bc를 이용한 계산결과 활용하기

변수명=$(echo “옵션; 계산식” | bc)

해당 옵션을 가지고 계산식을 bc로, 그 결과를 변수명에 담는다는 뜻

[root@sooyeon 0726]# var1=$(echo "scale=4; 3.14 * 3" | bc) ; echo $var1
9.42

0개의 댓글