Linux 셸 지식 집합
머리말
SHELL 은 몇 가지 문 제 를 처리 할 때 독특한 장점 을 가지 고 빠 르 고 편리 하 며 배 웠 을 때 자랑 도 할 수 있 습 니 다. 물론 셸 의 문법 은 아버 지 를 속 일 수 있 습 니 다. 체계 적 으로 배 운 적 이 없고 조금씩 쌓 일 수 밖 에 없습니다.
오늘 이것 은 데이터베이스 데 이 터 를 새로 고 치 는 스 크 립 트 를 실현 할 때 만 나 는 지식 점 입 니 다. 새로 고 칠 때 정규 일치, 수학 연산, 비교 등 을 사 용 했 습 니 다.
셸 의 배열
배열 정의
arr=(1 2 3 4 5)
arr=( yrt lulu yanruitao)
arr=('^[0-9]+$' '^yrt\.(\d+)\.log$')
arr=(
" " \
"yanruitao" \
"today is a good day!"
)
배열 의 사용
len=${#arr[@]} #
echo ${arr[0]} # , , 0
echo ${arr[2]} # 3
실제 의 예
[yanruitao@boss_runtime sh]$ arr=(
> " "
> "http:\/\/www\.baidu\.com\/(\d+)\.html"
> "yanruitao"
> "lulu"
> "yrt"
> )
[yanruitao@boss_runtime sh]$ echo ${#arr[@]}
5
[yanruitao@boss_runtime sh]$ echo ${arr[1]}
http:\/\/www\.baidu\.com\/(\d+)\.html
[yanruitao@boss_runtime sh]$ echo ${arr[0]}
[yanruitao@boss_runtime sh]$ echo ${arr[5]}
[yanruitao@boss_runtime sh]$
셸 의 크기 비교
# (())
if((6 <8)); then echo "yes "; fi # ――yes
if(($a>8)); then echo "yes "; fi
if(($a<=$b)); then echo "yes "; fi
# [] [[]]
if [ 2 -gt 1 ]; then echo "iforever "; fi
if [[ 'abc' > 'ab' ]]; then echo "iforever "; fi #iforever
if [[ 2 < 10 ]]; then echo "iforever "; fi #
if [[ 2 -lt 10 ]]; then echo "iforever "; fi #iforever
위의 이 몇 가 지 는 여전히 규칙 적 인 것 을 볼 수 있다.
두 개의 작은 괄호 [()] 안 에는 작은 괄호 보다 큰 것 을 직접 사용 하여 비교 할 수 있 고 (>, =), 그리고 '갱 부' 의 빈 칸 이 필요 하지 않 습 니 다. 수학 계산 서 에 괄호 ([]) 안 을 비교 할 때 - lt, - lt, - ne, - eq 등 연산 자 를 사용 해 야 합 니 다. 그리고 엄격 한 빈 칸 이 있어 야 합 니 다.
셸 의 괄호
# , for ,
[yanruitao@boss_runtime ad]$ for((a=0;a<10;a++))
> do
> echo $a
> done
0
1
2
3
4
5
6
7
8
9
# ++,
[yanruitao@boss_runtime ad]$ i=1
[yanruitao@boss_runtime ad]$ echo $i
1
[yanruitao@boss_runtime ad]$ let i++
[yanruitao@boss_runtime ad]$ echo $i
2
[yanruitao@boss_runtime ad]$ ((i++))
[yanruitao@boss_runtime ad]$ echo $i
3
#
[yanruitao@boss_runtime ad]$ echo 1+2
1+2
[yanruitao@boss_runtime ad]$ echo $((1+2))
3
# , shell , ,
[yanruitao@boss_runtime ad]$ a=1
[yanruitao@boss_runtime ad]$ (a=3;echo $a)
3
[yanruitao@boss_runtime ad]$ echo $a
1
# and
if [[ -n "$ret" && $ret -gt 123 ]]... #[[]] &&, -a
if [ -n "$ret" -a $ret -gt 123 ]... #[] -a, &&
if(($ret)) && (($ret >123 ))... #(()) &&
셸 함수 정의
function getId()
{
local url=$1 #local url ,
ereg="http:\/\/www\.baidu\.com\/\([0-9]\+\)\.html"
local ret=$(expr $url : $ereg)
if [[ -n "$ret" && $ret -gt 0 ]]; then # ret null [] ,-n , $ret null ,
echo $ret
return 0
fi
return 1
}
[yanruitao@boss_runtime sh]$ echo $?
0
[yanruitao@boss_runtime sh]$ getId "http://www.baidu.com/123.htl"
[yanruitao@boss_runtime sh]$ echo $?
1
[yanruitao@boss_runtime sh]$ getId "http://www.baidu.com/123.html"
123
[yanruitao@boss_runtime sh]$ echo $?
0
함수 의 전체 형식 은 위의 예 와 같 습 니 다. 이 안 에는 두 가지 점 을 주의 하 십시오.
우선 반환 값 입 니 다. return 을 통 해 반환 값 은 정수 일 수 있 으 며 호출 이 끝 난 후에 echo $를 사용 하 시 겠 습 니까?반환 값 을 볼 수 있 습 니 다.값 을 부여 하 는 형식 을 사용 하려 면 ret = $(getId) 와 같은 echo 가 필요 합 니 다.http://www.baidu.com.1234.html") echo 의 값 만 ret 변수 에 전 달 됩 니 다.
잡다 한 지식 점
문자열 트랜스 퍼 그룹
[yanruitao@boss_runtime sh]$ str=" lulu yrt yanruitao"
[yanruitao@boss_runtime sh]$ arr=($str) #
[yanruitao@boss_runtime sh]$ echo ${arr[*]}
lulu yrt yanruitao
[yanruitao@boss_runtime sh]$ echo ${#arr[@]}
4
상용 판단 표지 [- z STRING] '스 트 링' 의 길 이 는 0 이면 진짜 다. [ -n STRING ] or [ STRING ] 'STRING' 의 길 이 는 0 non - zero 가 아 닌 것 이 진실 이다.[ -d FILE ] FILE 가 존재 하고 디 렉 터 리 가 있다 면 진실 입 니 다.[ -a FILE ] FILE 가 존재 한다 면 진실 입 니 다.
링크 ux 배경 실행 관련
& # ,
./update.sh 100 500 &
ctrl + z # ,
jobs #
jobs -l # PID
[yanruitao@boss_runtime sh]$ jobs -l
[1] 9681 Running ./t.sh 100 300 &
[2] 9683 Running ./t.sh 100 300 &
[3]- 9685 Running ./t.sh 100 300 &
[4]+ 9688 Running ./t.sh 100 300 &
fg # , `fg %jobnumber`
[yanruitao@boss_runtime sh]$ jobs -l
[2] 10033 Running ./t.sh 100 300 &
[3] 10035 Running ./t.sh 100 300 &
[4]- 10037 Running ./t.sh 100 300 &
[5]+ 10039 Running ./t.sh 100 300 &
[yanruitao@boss_runtime sh]$ fg %2
./t.sh 100 300
bg # 。 , , bg %jobnumber
[yanruitao@boss_runtime sh]$ jobs -l
[1]- 11655 Running ./t.sh 100 300 &
[2]+ 11662 Running ./t.sh 100 300 &
[yanruitao@boss_runtime sh]$ fg %1
./t.sh 100 300
^Z
[1]+ Stopped ./t.sh 100 300
[yanruitao@boss_runtime sh]$ jobs -l
[1]+ 11655 Stopped ./t.sh 100 300
[2]- 11662 Running ./t.sh 100 300 &
[yanruitao@boss_runtime sh]$ bg %1
[1]+ ./t.sh 100 300 &
[yanruitao@boss_runtime sh]$ jobs -l
[1]- 11655 Running ./t.sh 100 300 &
[2]+ 11662 Running ./t.sh 100 300 &
kill #
kill %num # jobs job ,
kill pid #
ctrl + C #
이상 에서 말 한 것 이 본 고의 모든 내용 입 니 다. 리 눅 스 셸 명령 을 숙지 하 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.