연구실 서버는 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만 있으면 어디든 갈 수 있지..
이건 새로 사용하는 특이한 문법이 있으면 꾸준히 업데이트 할 생각..!
'개발 일기 > 기타' 카테고리의 다른 글
파이참 으로 원격 서버 연결하기 (1) | 2023.03.22 |
---|---|
VS Code SSH로 원격 서버 연결하기 (1) | 2023.02.21 |
[JENKINS] 젠킨스 기타 설정 (Poll SCM | SLACK 연동) (0) | 2022.11.29 |
[JENKINS] Jenkins-GitLab 프로젝트 빌드 및 실행하기 (1) | 2022.11.29 |
[JENKINS] Jenkins 설치하기 (0) | 2022.09.30 |
댓글