본문 바로가기
Today I learned

더운여름 셸 스크립트와 함께 해요! 열대야로 잠들기 어려울때! 불면증엔 셸스크립트!

by soheemon 2020. 8. 25.

더운여름 셸 스크립트와 함께 해요! 열대야로 잠들기 어려울때! 불면증엔 셸스크립트!

"본격적인 파티전에 기본문법 cheat sheet 정리하기"

https://devhints.io/bash 를 참고했습니다.

https://wiki.bash-hackers.org/syntax/pe 를 참고했습니다.

#!/user/bin/env bash

Basic

# 변수 출력하기
# $변수이름으로 출력하며, 전부 동일한 결과를 출력한다.
NAME="Jhon"
echo $NAME  #=> Jhon
echo "$NAME"
echo "${NAME}"

# 문자열 출력하기
# ''안에서 변수는 문자 그 자체이고 ""안에서 변수명은 참조다.
NAME="John"
echo "Hi $NAME" #=> Hi Jhon
echo 'Hi $NAME' #=> Hi $NAME

# 실행 결과를 변수로 저장하기
echo "I'm in $(pwd)" #=> $(명령어)
echo "I'm in `pwd`"  #=> 백틱으로 감싸진 부분은 명령어로 인식.

# 명령 실행 결과에 따라서 결정한다
# 나 이거 알아! 자바스크립트에도 비슷한거 있어!
ping 8.8.8.8 || echo "ping failed" #=> ||는 fail이면 뒤에것도 검사한다.
git commit && git push #=> &&는 true면 뒤에것도 검사한다.

# 함수 기본적인 함수 선언
get_name() {
    echo "Jhon"
}
echo "You are $(get_name)" #=> bash 명령어 호출하는거랑 모양이 똑같네.

# 조건문
if [[ -z "$string" ]]; then
    echo "String is empty!"
elif [[ -n "$string" ]]; then
    echo "String is not empty"
fi

# 유용한듯해! 펼치기!
echo {A,B}.js
{A, B} #=> A B
{A,B}.js #=> A.js B.js
{1..5} #=> 1 2 3 4 5

변수 가지고 놀기 :P

#문자열 쪼개기
name="Sohee"
echo ${name}
echo ${name/S/s} #=> sohee 문자를 대체한다.
echo ${name:0:2} #=> So 쪼개기. 0에서 2글자
echo ${name::2}  #=> So 쪼개기. +면 왼쪽에서 2글자만 보이기
echo ${name::-1} #=> Sohe 쪼개기. -1이면 오른쪽에서 한글자만 제외
echo ${name:(-1)} #=> e -면 오른쪽에서부터 자른다.
echo ${name:(-2):1} #=> e 오른쪽에서 두글자를 잘라와서 거기서 한글자만 가져옴

#하위 문자열 제거
${parameter%pattern} #=> parameter에서 %이하에 패턴을 삭제해준다.
${FILENAME%.*} #=> bash_chackers.txt --> bash_chackers
${FILENAME##*.} #=> bash_chackers.txt --> txt
${PATHNAME%/*}  #=> /home/bash/bash_hackers.txt --> /home/bash
${PATHNAME##*/} #=> /home/bash/bash_hackers.txt --> bash_hackers.txt

${FOO%suffix}  #=> 접미사 제거
${FOO#suffix}  #=> 접두사 제거
${FOO%%suffix}  #=> 긴 접미사 제거
${FOO##suffix}  #=> 긴 접두사 제거
${FOO/from/to}  #=> 첫번째 일치 항목만 바꾸기
${FOO//from/to}  #=> 일치 항목 전부 바꾸기
${FOO/%from/to}  #=> 접미사 바꾸기
${FOO/#from/to}  #=> 접두사 바꾸기

# 한줄주석

: '
여러줄
주석
입니다
특이하네요
하하하
'

댓글