?介于操作系統(tǒng)內(nèi)核和用戶之間的一個(gè)絕緣層,一種被稱為解釋性語(yǔ)言或者腳本語(yǔ)言的計(jì)算機(jī)語(yǔ)言署辉。通過(guò)將系統(tǒng)調(diào)用族铆、公共程序、工具和編譯過(guò)的二進(jìn)制程序”粘合“在一起來(lái)建立應(yīng)用哭尝,所有的UNIX命令和工具再加上公共程序哥攘,對(duì)于shell腳本來(lái)說(shuō),都是可調(diào)用的
???????? .sh 文檔里
?????????? #材鹦!/bin/bash 確定文件類型(可能被存放在 /sbin 逝淹、/usr/local/bin 、/usr/bin 桶唐、/usr/sbin 或 /usr/local/sbin 這樣的目錄下) 用來(lái)注釋? exit 0 用來(lái)結(jié)尾 ?echo把字符串輸出 ? ? ? ? ? ? ?到標(biāo)準(zhǔn)的輸出中
?????????????sh bash source(.)執(zhí)行腳本 腳本所有者執(zhí)行權(quán)限chmod u+rx xx.sh 再用./xx.sh執(zhí)行
?重定向 > 覆蓋
? ? ? ?使用腳本清除文件 s=路徑?? cd $s??? cat /dev/null >wtmp(sudo sh –c ” cat /dev/null >wtmp”) exit(sudo ./xx.h)管理權(quán)限
??Bash 特殊字符
???????????栅葡;echo hello; echo there同一行寫(xiě)多個(gè)命令
??????????? :空命令 while :等價(jià)于while true 在if/then占位then :
????????????? 變量擴(kuò)展和子串替換:>xx.sh(覆蓋) >>? 用于注釋
??????????? ?在雙括號(hào)里面三元運(yùn)算((:))$引用變量的值
??????????(a=xx莽红;)內(nèi)部變量是在子shell 腳本本身不能引用
?????????? {}復(fù)制 t.txt 的內(nèi)容到 t.back 中??? cp t.{txt,back}
? ? ? ? ? ? ?[] if語(yǔ)句
? ? ? ? ? ? ?<>重定向 >覆蓋(>>) &> est.sh 的 stdout(標(biāo)準(zhǔn)輸出)和 stderr(標(biāo)準(zhǔn)錯(cuò)誤)到 filename 中? >&2 重定向 test.sh 的 stdout 到stderr 中妥畏。
? ? ? ? ? ? ? ? |? ls -l| ./test.sh大寫(xiě)輸出#!/bin/bash? tr 'a-z' 'A-Z' exit0
? ? ? ? ? ? ? ? - ??#!/bin/bash
? ? ? ? ? ? ? ? BACKUPFILE=backup-$(date +%m-%d-%Y)
? ? ? ? ? ? ? ?# 在備份文件中嵌入時(shí)間.
? ? ? ? ? ? ? ?archive=${1:-$BACKUPFILE}
? ? ? ? ? ? ? ? #? 如果在命令行中沒(méi)有指定備份文件的文件名,
? ? ? ? ? ? ? ? #+ 那么將默認(rèn)使用"backup-MM-DD-YYYY.tar.gz".
tar cvf -?find . -mtime -1 -type f -print> $archive.tar
? ? ? ? ? ? ? ? gzip $archive.tar
? ? ? ? ? ? ? ? echo "Directory $PWD backed up in archivefile \"$archive.tar.gz\"."
? ? ? ? ? ? ? ? exit 0
變量與參數(shù)
????? ??變量
???????????? $variable事實(shí)上只是 ${variable}的簡(jiǎn)寫(xiě)形式引用變量的值n<10括號(hào)可以省略{}幫助
??????????? 變量名和等號(hào)之間不能有空格邦邦。同時(shí)安吁,變量名的命名須遵循如下規(guī)則:
? ? ? ? ? ? ?首個(gè)字符必須為字母(a-z,A-Z)燃辖。
? ? ? ? ? ? 中間不能有空格鬼店,可以使用下劃線(_)。
? ? ? ? ? ? ?不能使用標(biāo)點(diǎn)符號(hào)黔龟。
? ? ? ? ? ? ?不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)妇智。
除了顯式地直接賦值,還可以用語(yǔ)句給變量賦值,如:for file in?ls /etc
??????????? 只讀變量? readonly xx
??????????? 局部變量環(huán)境變量
??????????? 位置參數(shù) $1 …. ${10}…
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$# : 傳遞到腳本的參數(shù)個(gè)數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$* : 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)。與位置變量不同,此選項(xiàng)參數(shù)可超過(guò) 9個(gè)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$$ : 腳本運(yùn)行的當(dāng)前進(jìn)程 ID號(hào)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$! : 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程 ID號(hào)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$@ : 與$#相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$: 顯示shell使用的當(dāng)前選項(xiàng),與 set命令功能相同
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$? : 顯示最后命令的退出狀態(tài)佳遂。 0表示沒(méi)有錯(cuò)誤,其他任何值表明有錯(cuò)誤眷茁。
基本運(yùn)算符
A=expr $a + $b?expr表達(dá)式計(jì)算工具(awk)
? ? ? ? ? ? ?表達(dá)式和運(yùn)算符之間有空格 ?判斷在[] ?==與變量有空格
?關(guān)系運(yùn)算符
邏輯運(yùn)算符
字符串運(yùn)算符
文件測(cè)試運(yùn)算符
流程控制
? ? If-else
? ? then沒(méi)內(nèi)容事加:
if [ condition ]
then
if [ condition ]
then
commands1
else
commands2
fi
else
commands3
fi
? ? ??方式二
? ? ? ? ?a=10
? ? ? ? ?b=20
? ? ? ? ?if [ $a == $b ]
? ? ? ? ? ? ?then
? ? ? ? ? ? ? ? ? ?echo "a == b"
? ? ? ? ? ? elif [ $a -gt $b ]
? ? ? ? ? ? ? ? ? ? then
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? echo "a > b"
? ? ? ? ? ? ? ? ? ?elif [ $a -lt $b ]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?then
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? echo "a < b"
? ? ? ? ? ? ?else
? ? ? ? ? ? ? ? ? ? ? ? echo "Ineligible" fi
? ? ? ?多條件表示:
? ? ? 邏輯與
? ? ? ? ? ? ? if [ condition1 -a condition2 ]?
? ? ? ? ? ?或?? if [ condition1 ]&& [ condition2 ]
? ? ? 邏輯或
? ? ? ? ? ? ? ?if [ condition1 -o condition2 ]?
? ? ? ? ? 或?? if [ condition1 ] || [condition2 ]
? ? ?邏輯非(取反)
? ? ? ? ? ? ? ? !? ?
? ? ? ?For循環(huán)
? ? ? ? for loop in 1 2 3 4 5
? ? ? ?do
? ? ? ? ? ? ? ?echo "The value is: $loop"
? ? ? ? done
? ? ? ? 輸出結(jié)果:
? ? ? ? ? ? ? ?The value is: 1
? ? ? ? ? ? ? ?The value is: 2
? ? ? ? ? ? ? ?The value is: 3
? ? ? ? ? ? ? ?The value is: 4
? ? ? ? ? ? ? ?The value is: 5
? ? ? While
? ? ? ? ? while(( $int<=5 ))
? ? ? ? ? do
? ? ? ? ? ? ? ? ? echo $int
? ? ? ? ? ? ? ? ? let "int++" //減少$添加
? ? ? ? ? done
? ? ? ? ? while循環(huán)可用于讀取鍵盤(pán)信息。下面的例子中谈况,輸入信息被設(shè)置為變量MAN,按結(jié)束循環(huán)。
? ? ? ? ? ? ? echo 'press <CTRL-D> exit'
? ? ? ? ? ? ? echo -n 'Who do you think is the most handsome:'
? ? ? ? ? ? ? ?while read MAN
? ? ? ? ? ? ? do
? ? ? ? ? ? ? ? ? ? ? ?echo "Yes到踏!$MAN is really handsome"
? ? ? ? ? ? ? ?done
? ?無(wú)限循環(huán)
? ? ?while:
? ? ? ?do
? ? ? ? ? ? ?command
? ? ? done
? ? ?或者
? ? ?while true
? ? ?do
? ? ? ? ? ? ? command
? ? ? done
? ? ? 或者
? ? ? for (( ; ; ))
until循環(huán)? until condition
? ? ? ? ? ? ? ? ? do
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?command
? ? ? ? ? ? ? ? ? done
case選擇
? ? ? ? ? ? ??echo'Enter a number between 1 and 4:'
? ? ? ? ? ? ? echo 'The number you entered is:'
? ? ? ? ? ? ? ? ? readaNum
? ? ? ? ? ? ? ?case $aNum in
? ? ? ? ? ? ? ?1) echo'You have chosen 1' 變量和常數(shù) 支持邏輯符號(hào)
? ? ? ? ? ? ? ? ? ? ?;;
? ? ? ? ? ? ? ? 2) echo 'You have chosen 2'
? ? ? ? ? ? ? ? ? ? ?;;
? ? ? ? ? ? ? ? 3) echo'You have chosen 3'
? ? ? ? ? ? ? ? ? ? ? ;;
? ? ? ? ? ? ? ? ?4) echo 'You have chosen 4'
? ? ? ? ? ? ? ? ? ? ? ?;;
? ? ? ? ? ? ? ? ? *) echo'You did not enter a number between 1 and 4' ;;
? ? ? ? ? ? ? ? ? Esac
跳出循環(huán)? break continue
函數(shù)
? ? ? ? ? ?[ function ] funname [()]
? ? ? ? ? {
? ? ? ? ? ? ? ? ?action;?????????? 返回?cái)?shù)值0-255
? ? ? ? ? ? ? ? ?[return int;]???:return返回 或返回最后一條指令運(yùn)行結(jié)果
? ? ? ? ? }
? ? ? ? ?例如#!/bin/bash
? ? ? ? ? ? ? ? ?funWithReturn(){
? ? ? ? ? ? ? ? ? ? echo "This function will add the twonumbers of the input..."
? ? ? ? ? ? ? ? ? ? echo "Enter the first number: "
? ? ? ? ? ? ? ? ? ? read aNum
? ? ? ? ? ? ? ? ? ? echo "Enter the second number: "
? ? ? ? ? ? ? ? ? ? read anotherNum
? ? ? ? ? ? ? ? ? ? echo "The two numbers are $ aNum and $anotherNum !"
? ? ? ? ? ? ? ? ? ? return $(($aNum+$anotherNum))
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?funWithReturn
? ? ? ? ? ? ? ? ? ? ? ? ? echo "The sum of the two numbers enteredis $? !"
?? ? ? 函數(shù)參數(shù)? 小于10不加{}
? ? ? ? ??#!/bin/bash
? ? ? ? ? funWithParam(){
? ? ? ? ? ? ? ? echo "The first parameter is $1!"
? ? ? ? ? ? ? ? echo "The second parameter is $2!"
? ? ? ? ? ? ? ? echo "The tenth parameter is $10!"
? ? ? ? ? ? ? ? echo "The tenth parameter is ${10}!"
? ? ? ? ? ? ? ?echo "The eleventh parameter is ${11}!"
? ? ? ? ? ? ? ?echo "The total number of parametersis $# !"
? ? ? ? ? ? ? ?echo "Outputs all parameters as astring $* !"
? ? ? ? ?}
? ? ? ? funWithParam1 2 3 4 5 6 7 8 9 34 73
? ? ? ?輸出結(jié)果:
? ? ? ?The firstparameter is 1 !
? ? ? ?The secondparameter is 2 !
? ? ? ?The tenthparameter is 10 !
? ? ? ?The tenthparameter is 34 !
? ? ? ?The eleventhparameter is 73 !
? ? ? ?The totalnumber of parameters is 11 !
Outputs allparameters as a string 1 2 3 4 5 6 7 8 9 34 73 !
小編整理了一些java進(jìn)階學(xué)習(xí)資料和面試題,需要資料的請(qǐng)加JAVA高階學(xué)習(xí)Q群:701136382 這是小編創(chuàng)建的java高階學(xué)習(xí)交流群尚猿,加群一起交流學(xué)習(xí)深造窝稿。群里也有小編整理的2019年最新最全的java高階學(xué)習(xí)資料!