본문 바로가기

Linux

Bash shell scripts 문법

이 글은 bash shell scripts 언어에 관한 내용을 정리하는 곳이다. 지속적으로 업데이트 예정.

기본적인 문법 참조 : https://blog.gaerae.com/2015/01/bash-hello-world.html

 

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

 

blog.gaerae.com

 

1. Bash variable을 다른 스크립트로 전달하는 방법

 

#variable.sh
variable_first="abc"
varibale_second="def"

 

  • source를 통한 방법

 

source ./variable.sh
echo $variable_first 
echo $variable_second

 

abc
def​

 

  • export를 통한 방법

 

#variable.sh
variable_first="abc"
varibale_second="def"
export variable_first
export variable_second​

 

 

 

#in another bash scripts
echo $variable_first
echo $variable_second​

 

abc
def​

 

 

2. Integer or

String?

a=2334                   # Integer. 만약 a="2334"여도 똑같다. "2345"는 integer로 인식.
let "a += 1"
echo "a = $a"            # a = 2335

b=${a/23/BB}             # "BB"를 "23"로 바꾼다.
                         # 그러면 b는 string으로 바뀌고
let "b += 1"             # BB35 + 1
echo "b = $b"            # b = 1
                         # string은 0으로 인식.
e=''                     # ... Or e="" ... Or e=
echo "e = $e"            # e =
let "e += 1"             # e = 1, 역시 null도 0으로 인식.

 

3. bash shell paramters

# test.sh [parameter] ...
#!/bin/bash

echo "파라미터 개수 : $#"
echo "첫 번째 파라미터: $1"
echo "모든 파라미터 내용 : $@"

 

4. return?

shell scripts언어에서는 일반적인 언어에서의 return과 다른 점이 있다.

shell scripts에서의 return은 정수형만 가능하다는 것이다.

즉
a=100
function test()
{
    a=200
    return -9.34
}
b=$(test)
echo $b

혹은 
a=100

function test()
{
    a=200
    return "test"
}
b=$(test)
echo $b

라고 하면 
numeric argument required 에러가 뜬다.
함수를 통해 return 하고 싶다면
a=100

function test()
{
    a=200
    echo $a
}
b=$(test)
echo $b

# 200
또한 return 정수형을 알고 싶다면, 
a=100
function test()
{
    a=200
    return 55
}
test
echo "Return value of the function is $?"

# Return value of the function is 55
# return 255보다 큰 수면 255로 출력

 

5. dirname $0

현재 실행되는 쉘 스크립트 파일의 실행 경로.

dirname /home/ubuntu/git
# /home/ubuntu

# $0에는 실행한 쉘 스크립트의 경로가 지정.

 

6. case

while getopts "f:b": flag
do
    case "${flag}" in
        f) args=${OPTARG};;
        
        b) ...;;
    esac
done

echo $args
# f, b case일 경우, 해당 인자 즉 $OPTARG를 얻을 수 있다.

 

7. until loop

until nslookup www.naver.com; do
    echo "not done"; sleep 2;
done
----
COUNT=0
until [ $COUNT -gt 5]; do
    let COUNT=COUNT+1
done

'Linux' 카테고리의 다른 글

top을 통해 본 exe는 도대체 뭐지?  (0) 2022.03.16
symbolic link is red and relative path?  (0) 2021.11.29
알아두면 좋을 리눅스 명령어  (0) 2021.11.18
Mongodb initialize script  (0) 2021.11.15
(에러)the input device is not a TTY  (0) 2021.11.15