[언어] Bash 셸 용법 및 그 총화 노트
리 눅 스 시스템 개발 과 관련 된 일 을 하면 셸 과 접촉 하 는 것 을 피 할 수 없다. 또한 셸 을 잘 사용 하면 셸 문법 을 잘 알 면 되 는 것 이 아니 라 관련 리 눅 스 명령 에 대해 잘 알 아야 기능 이 강 한 셸 스 크 립 트 를 쓸 수 있다. 이 글 은 셸 의 문법 지식 을 상세 하 게 설명 하지 않 지만 가치 있 는 자 료 를 추천 할 것 이다. 본 고의 주요 목적 은...셸 의 관건 적 인 지식 점, 주의해 야 할 구덩이, 흔히 볼 수 있 는 장면 에서 셸 스 크 립 트 를 기록 합 니 다.
셸 의 학습 에 참고 할 수 있 는 자 료 는 다음 과 같다.
셸 튜 토리 얼
리 눅 스 명령
Bash shell
셸 은 엄격 한 의미 에서 볼 때 사용자 와 커 널 의 상호작용 도구 로 시스템 호출 에 의 해 이 루어 집 니 다. 셸 script 은 셸 로 쓴 스 크 립 트 프로그램 을 말 합 니 다. 그러나 우 리 는 쉽게 말 하면 셸 과 셸 script 을 동일시 합 니 다. 셸 은 여러 가지 가 있 습 니 다. 본 셸
/usr/bin/sh
또는 / bin/sh
, Bourne Again Shell /bin/bash
등 이 있 지만 가장 많이 사용 되 는 것 은 bin/bash
입 니 다.1) 변수
${variable_name}
readonly varable_name
unset variable_name
, unset 는 읽 기 전용 변 수 를 삭제 할 수 없습니다 ${variable_name1}${variable_name2}
${#varable_name}
expr index $string char_name
arr_name=(val1 val2)
$arr_name[$index]
${arr_name[@]}
length=${#arr_name[@]}
or:
length=${#arr_name[*]}
length=${#arr_name[$index]}
사용 자 는 명령 을 통 해 스 크 립 트 에 파 라 메 터 를 전달 할 수 있 고 함수 호출 도 함수 체 내 에 파 라 메 터 를 전달 할 수 있 으 며 둘 은 같 습 니 다.
$n
스 크 립 트 의 n 번 째 매개 변수 (n > = 1) 를 나타 낸다. 예 를 들 어 $1
는 첫 번 째 매개 변수 이 고 $0
는 스 크 립 트 의 이름 이나 함수 의 이름 을 나타 낸다. 다음은 몇 개의 특수 문자 이다.매개 변수
설명 하 다.
$#
스 크 립 트 매개 변수 개수 전달
$*
스 크 립 트 가 전달 하 는 인 자 를 단일 문자열 로 표시 합 니 다.
$$
스 크 립 트 가 실행 중인 현재 프로 세 스 ID
$!
백그라운드 에서 실행 중인 마지막 프로 세 스 ID
$@
$* 와 같 음
$?
마지막 명령 종료 상 태 를 표시 합 니 다. 0 은 success 를 표시 합 니 다.
5) 프로 세 스 제어 if:
if condition
then
...
fi
if-else:
if condition
then
...
else
...
fi
if else-if else:
if condition1
then
...
elif condition2
then
...
else
...
fi
for:
for var in val1 val2
do
done
while:
while condition
do
...
done
케이스: C 언어 와 유사 한 switch case
case in
1)
...
;;
2)
...
;;
esac
6) 함수 형식 은 다음 과 같다.
function func_name(...)
{
...
return $res
}
호출:
func_name $val1 $val2
7) 조건 부 테스트
-eq
는 같 지 않 고 -ne
는 같 지 않 으 며 -gt
는 크 고 -ge
는 같 으 며 -lt
는 작 으 며 -le
는 같 지 않다 =
는 같 지 않 습 니 다. !=
문자열 의 길 이 는 0 이 고 -z $string
문자열 의 길 이 는 0 설명 하 다.
-e $filename
파일 존재
-r $filename
파일 이 존재 하고 읽 을 수 있 습 니 다.
-w $filename
파일 이 존재 하고 쓸 수 있 습 니 다.
-x $filename
파일 이 존재 하고 실행 가능
-s $filename
파일 이 비어 있 지 않 고 존재 합 니 다.
-d $filename
파일 이 존재 하고 디 렉 터 리 입 니 다.
-f $filename
파일 이 존재 하고 일반 파일, i. e., regular files 입 니 다.
-c $filename
파일 이 존재 하고 문자 장치 파일 입 니 다.
-b $filename
파일 이 존재 하고 블록 장치 파일 입 니 다.
흔 한 장면 수요
1) 명령 매개 변수 배열 을 옮 겨 다 닐 때 매개 변수 문자열 에 빈 칸 이 있 습 니 다. 이 블 로 그 를 참고 하 십시오.
for ((i = 0; i < ${#ARGS[@]}; i++))
do
echo "${ARGS[$i]}"
done
——————————
뒤에 쓰다
bash 셸 의 일부 명령 이나 세부 적 인 용법 을 잘 기억 하지 못 하 더 라 도 사용 할 때 찾 아 보면 됩 니 다. 많이 쓰 면 익숙 하지만 기본 적 인 절차 에 익숙해 져 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
거품 정렬 알고리즘 (C & 자바 구현)C 언어 판 자바 언어 버 전...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.