728x90
반응형
Shell 문법 비교
1. 공통점
대부분의 셸은 Bourne Shell (sh) 계열 또는 C Shell (csh) 계열에서 파생되었기 때문에 공통적인 문법 요소를 공유
공통적으로 지원하는 기능:
- 명령 실행 (ls, echo, cd 등)
- 리다이렉션 (>, >>, <)
- 파이프 (|)
- 환경 변수 ($HOME, $PATH)
- 조건문 (if, case)
- 반복문 (for, while)
- 함수 사용
하지만, Bash, Zsh, Ksh, Tcsh 등에서는 문법이 다를 수 있습니다.
- Bash & Zsh → 가장 널리 사용되며 문법이 강력하고 유사함
- Sh → 기본적인 기능만 제공하여 스크립팅이 제한적
- Ksh → 성능이 좋고, Bash와 유사한 문법을 가짐
- Tcsh → C 스타일 문법을 사용하지만, Bash보다 스크립트 작성이 어렵고 제한적
2. 쉘별 문법 차이 비교
기능 | Bash (리눅스 기본) |
Zsh (macOS 기본) |
Sh (기본 셸) |
Ksh (빠른 실행) |
Tcsh (C 스타일) |
변수 선언 | var=value | var=value | var=value | var=value | set var=value |
변수 참조 | $var | $var | $var | $var | $var |
명령 치환 | `command` 또는 $(command) | `command` 또는 $(command) | `command` 또는 $(command) | `command` 또는 $(command) | `command` |
배열 | arr=(1 2 3) | arr=(1 2 3) | 지원 안 함 | set -A arr 1 2 3 | set arr = (1 2 3) |
조건문 | if [[ ... ]]; then ... fi | if [[ ... ]]; then ... fi | if [ ... ]; then ... fi | if [[ ... ]]; then ... fi | if ( ... ) then ... endif |
반복문 | for var in ...; do ... done | for var in ...; do ... done | for var in ...; do ... done | for var in ...; do ... done | foreach var (...) ... end |
함수 | function name { ... } 또는 name() { ... } | function name { ... } 또는 name() { ... } | 지원 안 함 | function name { ... } | alias name 'command' |
3. 쉘별 문법 예제
Bash & Zsh
#!/bin/bash
name="Ashton"
echo "Hello, $name!"
if [[ $name == "Ashton" ]]; then
echo "This is Ashton!"
fi
for i in {1..3}; do
echo "Number: $i"
done
Sh
#!/bin/sh
name="Ashton"
echo "Hello, $name!"
if [ "$name" = "Ashton" ]; then
echo "This is Ashton!"
fi
for i in 1 2 3; do
echo "Number: $i"
done
Ksh
#!/bin/ksh
set -A arr 1 2 3
echo "First element: ${arr[0]}"
for i in ${arr[@]}; do
echo "Number: $i"
done
Tcsh
#!/bin/tcsh
set name = "Ashton"
echo "Hello, $name!"
if ($name == "Ashton") then
echo "This is Ashton!"
endif
foreach i (1 2 3)
echo "Number: $i"
end
728x90
반응형
'OS & Hardware > Linux_ubuntu' 카테고리의 다른 글
[ubuntu] 여러개 이미지파일을 하나의 pdf 파일로 img2pdf (0) | 2025.02.21 |
---|---|
[Ubuntu] 우분투에서 아래하 한글 워드(hwp) 메뉴 한글로 바꾸고 키 오류 해결 (0) | 2025.02.02 |
ubuntu와 mac의 Shell은 그리고 여러Shell종류 및 비교 (1) | 2025.02.01 |
[ubuntu] 리눅스 우분투에서 삼성프린터 스캐너 사용하기 (1) | 2025.01.31 |
[Linux] 터미널에서 파일 찾기 (0) | 2025.01.30 |