티스토리 뷰
#!/usr/bin/env bash
스크립트 파일이 bash shell script 인지 알려주기 위해 선언하는 부분이다.
변수, 출력, 주석
#!/usr/bin/env bash
echo "hello"
# this is comment
str="hello"
echo ${str}
echo 로 문자열 출력을 할 수 있다.
주석은 # 을 선언하면 주석이 된다.
변수는 공백 없이 = 연산자를 사용하면 된다. 기본적으로 전역 변수가 되나, 현재 실행된 스크립트에서만 유효하다.( 자식 스크립트에서는 사용 불가 )
변수 앞에 export 를 선언하면, 환경 변수로 등록이 되어 자식 스크립트에서도 사용 가능하다.
local 을 선언하면, 함수 안에서 지역 변수로 사용 가능하다.
위치 매개 변수( Positional Parameters )
$0
쉘 스크립트 실행 명령어
$1
첫 번째 인자( argument ). $1 $2 $3 ... ${10} 순으로 인자 값을 가져 올 수 있다.( 10 부터는 {} 을 사용 )
$*
전체 인자 값
$@
$#
인자의 총 개수
Parameterr Expansion
str="Hello"
echo "Hello World!"
echo $str world
echo "$str world"
echo "${str} world"
echo "${str:2}" # llo :위치
echo "${str:2:1}" # l :위치:길이
echo "${string=None}" # None 변수 미선언시, 기본값 지정
echo "${string:=Noneee}" # Noneee 변수 미선언 혹은 NULL 일 때 기본값 지정
${:} 같은 expansion 은 문자열 뿐만 아니라 다른 변수들에도 동일하게 사용할 수 있는 것이니 참조하자.
이 외에도 다양한 문법이 존재 한다. 필요시 더 찾아보기로 하자.
$(), ${}
$(command)
command substitution 이라고 한다. 명령어 바꿔치기 정도로 해석이 될 것 같다.
이는 명령어를 수행하고, output을 $() 안에 넣어준다.
echo $(seq 1 10) # 1 2 3 4 5 6 7 8 9 10 출력
seq 라는 리눅스 명령어를 실행하고 결과를 $() 에 넣어주어, echo로 출력되는 것이다.
${parameter}
parameter substitution 이라고 한다. 변수를 참조해서, 결과를 ${}에 넣어준다.
$ animal=cat
$ echo $animals
# No such variable as “animals”.
$ echo ${animal}s
cats
$ echo $animal_food
# No such variable as “animal_food”.
$ echo ${animal}_food
cat_food
$ echo "$animal"s
cats
$ plural=s
$ echo $animal$plural
cats
{}가 있으나 없으나 $만으로 변수의 값을 넣어줄 수 있으나 다른 값을 붙여서 쓸려면 ${} 를 사용해야 한다.
그렇지 않으면 $부터 공백이나 $ 나올 때 까지 변수 이름으로 판단을 할 것이기 때문이다.
참조
array
배열 변수 사용은 반드시 괄호를 사용해야 한다.
# 배열 선언
declare -a array
# 배열에 값 저장
array=("1" "2" "3" "4")
echo ${array} # 1 출력
echo ${array[@]} # 1 2 3 4 출력
echo ${array[*]} # 1 2 3 4 출력
# 배열에 값 추가 및 전체 배열 출력
array[4]="test"
echo ${array[@]} # 1 2 3 4 test 출력
# 배열에 값 추가
array=(${array[@]} "add")
echo ${array[@]} # 1 2 3 4 test add 출력
if와 정수, 문자열 비교
num=3
if [ $num -eq 3 ]; then
echo "num is 3"
elif [ $num -ne 3 ]; then
echo "num is not 3"
else
echo "else statement"
fi
str="Hello"
if [ $str = "Hello" ]; then
echo "str is Hello" # str is Hello
fi
if [ $str == "Hello" ]; then
echo "str is Hello" # str is Hello
fi
if [ $str != "Hel" ]; then
echo "str is not Hel" # str is not Hel
fi
for
참조
'Linux' 카테고리의 다른 글
[ Linux ] Crontab 이란? 활용 방법 (2) | 2020.04.06 |
---|---|
[ linux ] csv 파일 column 합계 구하기 (0) | 2020.04.06 |
[ linux ] PATH 설정 및 반영 (0) | 2020.03.19 |
[ linux ] 특정 포트 사용하고 있는 프로세스 찾기 (0) | 2020.03.09 |
linux 표준 출력과 표준 에러( STDOUT, STDERR ) (0) | 2019.10.14 |
- Total
- Today
- Yesterday
- Postman
- error
- spring boot
- spring
- plugin
- Size
- Linux
- docker
- Spark
- intellij
- scala
- Git
- elasticsearch
- SpringBoot
- Filter
- maven
- JPA
- Index
- Log
- gradle
- Kibana
- mac
- tomcat
- install
- AWS
- logstash
- Java
- Container
- JSON
- apm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |