본문 바로가기
개발 일기/기타

내가 쓰려고 정리하는 dash 문법 정리

by URMOO 2023. 3. 9.
반응형

연구실 서버는 ubuntu 인데.. shell script를 만들어 쓰려고 하니 뭔가 안됐다. 
찾아보니 우분투 몇 버전 이상은 bash가 아니라 dash고 이걸 bash로 바꾸려면 뭔가 설정을 해야한다고 하는데
난 쫄보라.. 다른 사람들이 그 전에 뭘 어떻게 해놨을지도 모르니까.. 내가 서버에 맞춰 살기로했다.. 

근데 검색해도 다 bash로 바꿔쓰는 것만 나왔다. 뭔가 bash랑 비슷하면서 안되니까 너무 짜증남.. 
결국 하나하나 다 테스트 해보면서 대충 사용했는데 호옥시 나같은 사람들을 위해서 정리해보는 dash 문법!
뭐 대단한건 아니고 그냥 기본 문법밖에 없다 ㅎㅎ 왜냐면 내가 기본 문법밖에 안썼으니까 ^__^

0. 파일 설정

#!/bin/dash

###

보통 sh 파일을 만들 때 저 파일 부분을 #!/bin/bash 로 쓰는데, dash로 써준다.
저장은 똑같이 파일명.sh로 저장하고 sh 파일.sh 로 실행하면된다. 

1. 변수 

VAR1="test1 test2 test3"
VAR2="test"

#오류남 붙여써야함
VAR3 = "TEST"

VAR1 처럼 띄어쓰기로 구분하면 리스트처럼도 쓸 수있다.

2. 변수 사용하기

VAR1="Hello!"
VAR2="World!"

#Hello! World! 로 출력됨
VAR3="$VAR1 $VAR2"

#Hello!_World! 로 출력됨
VAR4="$VAR1\_$VAR2"

#Hello!/World! 로 출력됨
VAR5="$VAR1/$VAR2"

#한 문장?이면 따옴표 안써도 됨
#Hello!!!! 로 출력됨
VAR5=$VAR1!!!

변수를 사용할 떄는 $ 표시를 붙여써주면된다. 문자열인 경우 큰따옴표 안에 넣어줘야 변수가 제대로 입력된다. 
만약 변수 사이에 다른 문자나 다른 변수를 붙이고싶으면 역슬래쉬를 사용해서 뒤로 붙여준다. 
그런데 특이하게 슬래쉬랑 =는 문자로 그냥 인식되더라..?? 파일 경로 해줄 때 유용하게 사용했다. 

3. for loop

LIST="item1 item2 item3"

#변수사용
for item in $LIST
do
	#할일
done

#그냥 사용
for item in "test1" "test2" "test3"
do
	#할일
done

위 처럼 변수를 선언해 사용할 수도있고, 아래처럼 직접 하나씩 넣어줘도 상관없다. do-done을 꼭 써줘야한다. 
일반적인  언어들과 마찬가지로 break와 continue 사용이 가능하다!

4. if

#괄호X
if ! test -d $DIR; then
	mkdir -p $DIR;
fi

#괄호 사용 띄어쓰기 중요함
if ! [ $TEST = 1 ]; then
	echo ""
fi

위처럼 괄호를 안쓸 수도있고, 아래처럼 쓸 수 있는데 무슨 차이인지는 솔직히 잘 모르겠다.. 
그리고 조건문의 띄어쓰기에 주의해야한다!! 안띄어쓰면 오류남.. 괄호도 안띄어쓰면 오류남.. 개복치.. 
그리고 조건문의 세미콜론과 then, fi 를 꼭 써주자..


뭔가 쓰니까 정말 간단한거 밖에 없네.. 사실 bash도 잘 사용해보지 않아서 정확히 뭐가 어떻게 다른지 잘 모르겠다. 
이 문법이 POSIX?? 이거라는데 뭐 얼마나 쓸까 싶기도 하고.. 역시 for과 if만 있으면 어디든 갈 수 있지..
이건 새로 사용하는 특이한 문법이 있으면 꾸준히 업데이트 할 생각..!

반응형

댓글