셸 프로 그래 밍 - 입문 편
16408 단어 shell
#!/bin/bash
#comments
Your commands go here
첫 줄 의 기호 \ #!시스템 에 다음 경 로 를 알려 주 는 프로그램 은 이 스 크 립 트 파일 을 설명 하 는 셸 프로그램 입 니 다.첫 줄 에 이 말 이 없 으 면 스 크 립 트 파일 을 실행 할 때 오류 가 발생 합 니 다.다음 부분 은 메 인 프로그램 입 니 다. Shell 스 크 립 트 는 고급 언어 처럼 변수 할당 도 있 고 제어 문 도 있 습 니 다.첫 줄 을 제외 하고 \ # 로 시작 하 는 줄 은 이 줄 이 끝 날 때 까지 주석 줄 입 니 다.한 줄 이 완성 되 지 않 으 면 줄 끝 에 '를 붙 일 수 있 습 니 다. 이 기 호 는 다음 줄 이 이 길드 와 같은 줄 로 합 쳐 진 다 는 것 을 나타 냅 니 다.스 크 립 트 실행: 편집 이 완료 되 었 습 니 다. 스 크 립 트 를 filename. sh 로 저장 합 니 다. 파일 이름 접미사 sh 는 Bash 스 크 립 트 파일 임 을 표시 합 니 다.스 크 립 트 를 실행 하 는 방법 은 두 가지 가 있 습 니 다. ① 스 크 립 트 파일 의 실행 가능 한 권한 을 먼저 사용 한 다음. / filename. sh chmod + x filename. sh. / filename. sh ② 직접 bash filename. sh. filename 의 파일 시작 은 \ #! /빈 / bash, 시작 이 \ # 라면! /bin / sh 는 sh filename. sh 로 합 니 다.bash 와 sh 는 대부분 통용 되 지만 차이 가 있 을 수 있 습 니 다. bash 를 통일 적 으로 사용 하 는 것 을 권장 합 니 다. 다음은 전형 적 인 'hello World' 에 착안 하여 가장 간단 한 Shell 스 크 립 트 의 모습 을 살 펴 보 겠 습 니 다.
#!/bin/bash
#print hello world in the console window
a = "hello world"
echo $a
문장의 주석: 한 줄 주석: 시작 에 우물 번호 '\ #' 를 추가 하고 주석 이 여러 줄 이면 줄 의 시작 에 \ # 를 추가 합 니 다.사실 많은 사람들 이 모 릅 니 다. 셸 은 여러 줄 의 주석 을 지원 하 는 여러 줄 의 주석 입 니 다.
:<<BLOCK
......
BLOCK
예:
#!/bin/bash
:<<BLOCK
author:michaelzeng
date:20160419
BLOCK
echo "hello world"
2. 판단 문 if 기본 문법:
if condition; then
command
else
command
fi
판단 조건 은 문자열 비교, 숫자 크기 비교 또는 파일 판단 등 문자열 비교 일 수 있 습 니 다.두 문자열 의 길이 가 같 지 않 은 지 판단 하기 - n: 문자열 의 길이 가 0 보다 큰 지, 0 보다 크 면 '예' - z: 문자열 의 길이 가 0 과 같 는 지, 같 으 면 '예' 정수 비교 문자: - eq: 같은 - ge: 같은 - le 보다 크 면 - ne 보다 작 습 니 다. - lt 와 같 지 않 습 니 다. 주의 보다 크 면 정수 만 비교 할 수 있 습 니 다. 만약 에 부동 소수점 이 라면,bc 명령 으로 처리 할 수 있 습 니 다. 방법 은 다음 과 같 습 니 다. bc 명령 은 크기 를 비교 할 수 있 습 니 다. 정확하게 1 을 되 돌려 주 고 오 류 는 0 으로 되 돌려 줍 니 다.
a=1.85;b=2.2
if [ $(echo "$a < $b"|bc) -eq 1 ];then
echo "a < b"
else
echo "a > b"
fi
논리 조작:!:반대로 논리 값 과 반대 되 는 논리 값 을 취한 다. -a: (and) 와 두 논리 값 은 '예' 이 고 반환 값 은 '예' 이 며 반대로 '아니오' 도 사용 할 수 있 습 니 다. & o: 또는 (or) 두 논리 값 중 하 나 는 '예' 이 고 반환 값 은 '예' 입 니 다.사용 가능 | | 그 중: - a 와 - o 는 주로 괄호 안에 사용 되 며, []; & &와 | | 이중 괄호 에 사용 되 며, [[] 아래 두 문장 은 등가 이다
a=1;b=2
[[ $a -eq 1 && $b -eq 2 ]] && echo ok
[ $a -eq 2 -a $b -eq 2 ] && echo ok
단일 괄호 와 이중 괄호 의 차이 에 대하 여 후속 으로 다시 이야기 하 다.
파일 작업: 파일 테스트 표현 식 은 보통 파일 정 보 를 테스트 하기 위해 스 크 립 트 에서 파일 사랑 이 백업, 복사, 삭 제 를 적용 할 지 여 부 를 결정 합 니 다.자주 사용 하 는 파일 연산 자 는 다음 과 같 습 니 다. - d: 대상 이 존재 하고 디 렉 터 리 가 "예" - f: 대상 이 존재 하 며 파일 이 "예" - L: 대상 이 존재 하고 기호 연결 을 위해 "예" - r: 대상 이 존재 하고 읽 을 수 있 으 면 "예" - s: 대상 이 존재 하 며 길이 가 0 이 아니면 "예" - w: 대상 이 존재 하고 쓸 수 있 으 면 "예" 로 되 돌려 줍 니 다.- x: 대상 이 존재 하고 실행 가능 하면 "예" 로 되 돌려 줍 니 다.
3. 순환 구조 셸 에서 흔히 볼 수 있 는 순환 문 구 는 for 순환, while 순환, until 순환 for 순환 형식 1: 순환 반복
for $var in list;do
commands
done
예: 어떤 디 렉 터 리 를 옮 겨 다 니 기
for file in `ls /home`;do echo $file;done
형식 2: 조건 순환
for (( cond1; cond2; cond3 ));do
commands
done
예: for 순환 실현 구구 곱셈 표
#!/bin/bash
#
#for a seq 9;do
#for a {1..9};do
for((a=1;a<10;a++));do
for((b=1;b<=a;b++));do
echo -ne "$a*$b=$((a*b))\t"
if [[ $b -eq $a ]];then
echo
fi
done
done
수출 결과: 1 * 1 = 1 1 = 1 2 * 1 = 2 2 * 2 = 2 2 * 2 = 4 3 * 1 = 3 * 2 = 3 * 2 = 6 3 * 2 = 6 * 3 = 9 4 * 1 = 4 * 2 = 4 * 2 = 4 * 2 = 8 4 * 3 = 2 2 = 2 4 * 2 = 2 2 2 2 = 8 4 * 2 = 4 * 2 = 4 * 2 = 8 4 * 2 = 8 4 * 3 = 2 = 8 4 * 3 = 12 4 * 3 = 12 4 * 2 2 2 = 2 4 * 4 4 * 4 = 16 * 4 = 16 * 4 = 16 * 4 = 16 * 6 = 16 * 6 = 16 * 6 = 36 * 6 = 30 6 * 6 = 36 * 6 = 7 * 2 = 7 * 2 = 2 = 17 * 2 = 17 * 3 = 17 * 3 = 21 * 3 = 21 7 * 4 = 28 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 459 * 6 = 54 9 * 7 = 63 9 * 8 = 729 * 9 = 81
while 순환: 표현 식 이 성립 되 고 do 와 done 간 의 조작 을 반복 합 니 다. 표현 식 이 성립 되 지 않 을 때 까지 문법 은 다음 과 같 습 니 다.
while condition; do
commands
done
while 는 파일 의 줄 을 읽 고 해당 하 는 동작 을 합 니 다.
cat file.txt|while read line;do
echo $line
done
while read line;do
echo $line
done < file.txt
until 순환: 표현 식 이 성립 되 지 않 습 니 다. 표현 식 이 성립 될 때 까지 do 에서 done 사이 의 작업 을 반복 합 니 다. until 과 while 문 구 는 변환 할 수 있 습 니 다.
until condition; do
commands
done
예: 다음 스 크 립 트 는 1, 2, 1, 2, 3 을 출력 합 니 다. 조건 [3 - gt 3] 이 false 이기 때문에 do 와 done 사이 의 문 구 를 실행 합 니 다.
#!/bin/bash
i=1
while [ $i -lt 3 ];do
echo $i
i=$(( i + 1 ))
done
i=1
until [ $i -gt 3 ];do
echo $i
i=$(( i + 1 ))
done
순환 제어: break 와 contine 은 for, while, until 순환 에서 break 는 순환 을 강제로 종료 할 수 있 습 니 다. break 문 구 는 현재 순환 에서 만 종료 할 수 있 습 니 다. 2 층 순환 이 내장 되 어 있 으 면 외부 순환 에서 break 를 사용 해 야 합 니 다.또한 break 2 를 사용 하여 2 층 순환 을 종료 할 수 있 습 니 다. 예 를 들 어 99 곱셈 표 에서 a = 5 를 건 너 뛴 경우 break 와 break 2 의 출력 차 이 를 자체 적 으로 비교 할 수 있 습 니 다.
#!/bin/bash
#for a seq 9;do
#for a {1..9};do
for((a=1;a<10;a++));do
for((b=1;b<=a;b++));do
if [[ $a -eq 5 ]];then
break
# 2
#break 2
fi
echo -ne "$a*$b=$((a*b))\t"
if [[ $b -eq $a ]];then
echo
fi
done
done
contine 은 스 크 립 트 가 뒤의 문 구 를 뛰 어 넘 고 다음 순환 을 실행 할 수 있 습 니 다. 예 를 들 어 99 곱셈 표 가 b = 2 를 뛰 어 넘 는 경우.
#!/bin/bash
#for a seq 9;do
#for a {1..9};do
for((a=1;a<10;a++));do
for((b=1;b<=a;b++));do
if [[ $b -eq 2 ]];then
continue
fi
echo -ne "$a*$b=$((a*b))\t"
if [[ $b -eq $a ]];then
echo
fi
done
done
4. 다 분기 구조 다 분 지 는 if 문 구 를 사용 할 수도 있 고 케이스 를 사용 할 수도 있다.case 의 역할 은 문자열 이 어떤 값 과 같 으 면 그 값 뒤의 동작 을 수행 하 는 것 입 니 다.같은 동작 이 여러 값 에 대응 하면 "|" 을 사용 하여 각 값 을 분리 합 니 다.
if condition; then
command
elif condition; then
command
else
command
fi
case 기본 문법:
case $var in
pattern1)
commands ;;
pattern2 | pattern3)
commands ;;
*)
commands ;;
esac
5. 대화 모드: ① read 명령, read - p "var: 사용자 의 입력 을 알려 주 고 입력 값 을 변수 에 부여 합 니 다.② select 명령 은 한 그룹의 다른 값 에서 선택 할 수 있 습 니 다.그 문법 은 다음 과 같다.
select var in list; do
break;
done
break 가 없 으 면 수 동 으로 종 료 될 때 까지 계속 실 행 됩 니 다. 예 를 들 어:
#!/bin/bash
read -p "what is your name:" name
echo "hello $name"
#select
select day in "201611121" "201611122" "201611123"; do
echo "day choice:$day"
select time in "23:24:11" "23:25:12" "23:26:13";do
echo "time choice:$time"
break
done
break
done
echo $day/$time
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.