資源描述:
《shell腳本語法》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、腳本的后綴還是寫.sh雖然不是必須,但一眼看見易于知曉是腳本?shell簡單的說就是一個命令解釋器,用于用戶和linux內(nèi)核的溝通。shell中所執(zhí)行的命令相當(dāng)于fork出的子進(jìn)程一樣。建立腳本。#!/bin/bash????符號#!用來告訴系統(tǒng)它后面的參數(shù)是用來執(zhí)行該文件的程序,bash腳本第一句都是這個,他會讓系統(tǒng)指定以bash來解釋這個腳本Xxxx?//腳本內(nèi)容chmod777file之后就可以執(zhí)行了1.基礎(chǔ) #????????????????//shell腳本注釋符號二:變量1.變量種類:linux下變量
2、類型只有兩種數(shù)字型??和字符串型?2.聲明變量declarevarname聲明一個局部變量varname,也可以一次聲明多個同類型的變量declarevar1var2var3僅創(chuàng)建變量的程序能使用的變量是時局部變量?exportvarname2保留字export使得變量可由環(huán)境存取。即這個變量可以和系統(tǒng)中的其他程序共享。????這里不會?3.變量賦值,引用變量時前面要加"$"將數(shù)值賦給變量,可以不聲明變量直接賦值如letvar=1000*注意:等號兩端不能有空格let后面不加&號???待?比如i++?:?delcare
3、i=1leti=”$i+1"將字符串賦給變量必須先聲明變量,且賦值在同一條語句,賦的值必須用雙引號引起declarevar="100-100-100"echo$varHOME="/home"???????????????//注意賦值不要有空格HOME_LIST=$(ls/home)//把命令的執(zhí)行結(jié)果賦值給變量 ehco$HOME??????????????????//$符號是獲得變量HOME的值系統(tǒng)變量: $0這個程序的執(zhí)行名字 $n 這個程序的第n個參數(shù)值,n=1...9 $* 這個程序的所有參數(shù) $#這
4、個程序的參數(shù)個數(shù) $$這個程序的PID $!執(zhí)行上一個背景指令的PID$?上一個指令的返回值4環(huán)境變量由export關(guān)鍵字處理過的變量叫做環(huán)境變量。我們不對環(huán)境變量進(jìn)行討論,因為通常情況下僅僅在登錄腳本中使用環(huán)境變量。三:運(yùn)算符1.linux有三類運(yùn)算符:算術(shù)運(yùn)算符:+-*?/?%邏輯運(yùn)算符:!&&??
5、
6、比較運(yùn)算符?算術(shù)運(yùn)算符:letsum=“$a+$b"注意:等號兩邊沒空格?加號兩邊有空格。且有關(guān)鍵字let?不然sum是字符算100+200的形式。?邏輯運(yùn)算符:?比較運(yùn)算符:-eq:等于-ne:不等于-gt:大
7、于-ge?:大于等于-lt:小于-le:小于等于leta=1000letb=400 文件比較運(yùn)算符 -efilename???????如果filename存在,則為真???????????[-e/var/log/syslog] -dfilename??????如果filename為目錄,則為真??????[-d/tmp/mydir] -ffilename???????如果filename為常規(guī)文件,則為真[-f/usr/bin/grep] -Lfilename???????如果filename為符號鏈接,則為真
8、??[-L/usr/bin/grep] -rfilename?????????如果filename可讀,則為真?????????????[-r/var/log/syslog] -wfilename???????如果filename可寫,則為真???????????[-w/var/mytmp.txt] -xfilename????????如果filename可執(zhí)行,則為真??????????[-L/usr/bin/grep filename1-ntfilename2如果filename1比filename2新,則為
9、真[/tmp/install/etc/services-nt/etc/services] filename1-otfilename2如果filename1比filename2舊,則為真[/boot/bzImage-otarch/i386/boot/bzImage] 字符串比較運(yùn)算符(請注意引號的使用,這是防止空格擾亂代碼的好方法) -zstring??????????????如果string長度為零,則為真?????????[-z"$myvar"] -nstring?????????????如果string長度
10、非零,則為真??????????????[-n"$myvar"] string1=string2如果string1與string2相同,則為真["$myvar"="onetwothree"] string1!=string2如果string1與string2不同,則為真["$myvar"!="onetwothree"]if??