이 글은 bash shell scripts 언어에 관한 내용을 정리하는 곳이다. 지속적으로 업데이트 예정.
기본적인 문법 참조 : https://blog.gaerae.com/2015/01/bash-hello-world.html
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 |