bash命令解釋器(shell)

?介于操作系統(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í)資料!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凿掂,一起剝皮案震驚了整個(gè)濱河市伴榔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖踪少,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骗灶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡秉馏,警方通過(guò)查閱死者的電腦和手機(jī)耙旦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萝究,“玉大人免都,你說(shuō)我怎么就攤上這事》瘢” “怎么了绕娘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)栽连。 經(jīng)常有香客問(wèn)我险领,道長(zhǎng),這世上最難降的妖魔是什么秒紧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任绢陌,我火速辦了婚禮,結(jié)果婚禮上熔恢,老公的妹妹穿的比我還像新娘脐湾。我一直安慰自己,他們只是感情好叙淌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布秤掌。 她就那樣靜靜地躺著,像睡著了一般鹰霍。 火紅的嫁衣襯著肌膚如雪闻鉴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天茂洒,我揣著相機(jī)與錄音孟岛,去河邊找鬼。 笑死获黔,一個(gè)胖子當(dāng)著我的面吹牛蚀苛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玷氏,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼堵未,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了盏触?” 一聲冷哼從身側(cè)響起渗蟹,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤块饺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后雌芽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體授艰,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年世落,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淮腾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屉佳,死狀恐怖谷朝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情武花,我是刑警寧澤圆凰,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站体箕,受9級(jí)特大地震影響专钉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜累铅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一跃须、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧争群,春花似錦回怜、人聲如沸大年。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翔试。三九已至轻要,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垦缅,已是汗流浹背冲泥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壁涎,地道東北人凡恍。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像怔球,于是被迫代替她去往敵國(guó)和親嚼酝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本竟坛,現(xiàn)在我們來(lái)進(jìn)一...
    LiWei_9e4b閱讀 1,574評(píng)論 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,334評(píng)論 0 10
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,064評(píng)論 3 53
  • 流程控制 if 單條件 雙分支 多分支 case case支持glob風(fēng)格的通配符: *: 任意長(zhǎng)度任意字符?: ...
    毛利卷卷發(fā)閱讀 750評(píng)論 0 1
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,810評(píng)論 0 38