반응형
셸스크립트를 처음 접하고 딱 하루 정도가 지날 즈음 든 생각은,
아니, 셸스크립트는 파이썬보다 막장이잖아?
막연하게나마 저런 생각이 들었다.
변수 타입도 없고, 따옴표도 어떤 땐 있으나마나 하고...
sh의 "1 2 3 4 5"는 파이썬의 [1, 2, 3, 4, 5]와 같다는 것도 충격이었다.
우선 콤마란 게 필요없다.
어떤 때는 괄호도 필요없다.
또 어떤 경우에는 따옴표도 필요없다ㄷㄷㄷ
하여튼,
셸스크립트의 if문은 파이썬과 상당히 비슷한 면이 있다.
간단한 if문을 써보면
파이썬은
a = 10
if a == 10:
print("equal")
elif a < 10:
print("less than 10")
else:
print("greater than 10")
이런 느낌이라면,
셸스크립트는
a=9 # 등호 좌우에 스페이스가 없어야 함!
if [ $a = 10 ] # 대괄호 사이에 스페이스가 있어야 함! 등호 사이엔 스페이스가 있어도 됨.
then
echo "equal"
elif [ $a -lt 10 ] # < 기호를 셸에서 쓰므로ㅜ -lt, -gt 등의 옵션을 사용한다.
then
echo "less than 10"
else
echo "greater than 10"
fi
이런 느낌이다.
다소 생소한 부분을 정리해보면
1. 변수선언시 등호 좌우로 스페이스를 넣으면 안 된다. (오류가 남)
2. if문 내의 조건식은 대괄호를 쓰는데, 대괄호와 조건식 사이에는 좌우에 스페이스가 필요하다.
3. else문을 제외하고 모든 if와 elif문 아래에는 then이라는 키워드가 꼭 필요하다. (혹은`if [ 조건 ]; then`)
4. if문의 끝엔 예외없이 fi를 꼭 넣어줘야 한다.
5. 크고작다는 기호에 "<"나 ">"를 쓸 수 없다. (얘들이 셸 연산자이기 때문)
대신 -lt, -gt, -le, -ge 등을 사용한다.
그럼에도 <나 >, <=, >= 기호를 사용하고 싶다면
대괄호 한 겹 대신 소괄호 두 겹으로 감싸주면 된다.
간단히 마치며
셸스크립트로 파이썬을 대체하고 싶은 것은 아니다.
다만, 리눅스 운영체제를 더 잘 다루고 싶어서 배우는 중인데,
이거 진국이다. 뭐랄까, 재미있기도 하고.
셸스크립트는 45년 전에 개발되었다고 하는데
(zsh은 '90년에 만들어졌다고 한다.)
당시로 타임머신을 타고 돌아간 기분이다.
(물론 좋은 의미로!)
반응형
'기타 > 셸스크립트' 카테고리의 다른 글
[리눅스] sh파일을 리포매팅해주는 shfmt (0) | 2024.02.10 |
---|---|
[셸스크립트] for문의 스코프를 정하는 do와 done (0) | 2024.02.10 |
[리눅스] 셸스크립트기초 - 지역변수와 전역변수 (0) | 2024.02.10 |
댓글