新聞中心
這篇文章主要講解了“如何使用sh腳本命令”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何使用sh腳本命令”吧!
創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的十載時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如崗?fù)?/a>等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致贊賞。
#!/bin/bash
文件第一行,提示電腦后面的代碼需要用 /bin/bash 來(lái)解讀echo
輸出內(nèi)容,param=$(cat ./test.txt)
變量賦值,參數(shù)名\等號(hào)\值,三個(gè)之間不能有空格,如果需要得到某夠命令獲取的信息作為值,都可以用這種方式,變量=$(命令);變量賦值單引號(hào)與雙引號(hào)的區(qū)別,單引號(hào)不會(huì)轉(zhuǎn)義內(nèi)容,雙引號(hào)會(huì)轉(zhuǎn)義內(nèi)容;
變量的使用
$param
或者${param}
即可使用;獲取用戶輸入值
echo "請(qǐng)輸入你想要輸入的值" read inputValue echo $inputValue #這里打印出來(lái)的就是用戶輸入的值 param=$inputValue #這里將用戶輸入的值賦給了param echo $param #這里打印出來(lái)的也是用戶輸入的值
sh 下標(biāo)傳入?yún)?shù)
sh ./test.sh a b
#!/bin/bash echo $0 # test 執(zhí)行的文件名 echo $1 #a 第一個(gè)參數(shù) echo $2 #b 第二個(gè)參數(shù) 可以繼續(xù)寫(xiě) echo $# #2 傳遞到腳本的參數(shù)個(gè)數(shù) echo $* #a b 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù) echo $$ # 當(dāng)前的進(jìn)程號(hào) echo $! #d 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程號(hào) ..
getopts
sh腳本傳參數(shù)方法,如:test.sh -a 1
創(chuàng)建腳本 test.sh
#!/bin/bash while getopts "a:w:p:n" arg; #這里設(shè)定了參數(shù)必須是-a;-w;-p;-n這幾個(gè)參數(shù)名,后面的冒號(hào)表示必須傳入?yún)?shù) do case $arg in a ) #所有版本號(hào)統(tǒng)一 parms1="$OPTARG" ;; w ) #前端版本號(hào) parms2="$OPTARG" ;; p ) #php版本號(hào) parms3="$OPTARG" ;; n ) #最新版本號(hào) parms4=1 ;; ? ) echo "未知參數(shù): -a; -w ; -p ; -n " exit esac done
例如執(zhí)行 sh ./test.sh -a 1
可以選擇參數(shù)名-a 就必須傳入?yún)?shù) 1,-n則可以不用參數(shù);
字符串的操作
param='abcd_'; param1="$param"'efgh' #拼接字符串,直接跟著寫(xiě)即可 echo $param1 #abcd_efgh echo ${#param1} #計(jì)算字符串長(zhǎng)度 輸出 9 echo ${param1:1:4} #截取字符串 從1號(hào)下標(biāo)開(kāi)始到4號(hào)結(jié)束 輸出 bcd_ 都知道下標(biāo)從0開(kāi)始的吧 echo ${param1#abcd_} #從左相右匹配截取剩下的字符串,注意必須從頭開(kāi)始算,也就是說(shuō)不能寫(xiě)個(gè)d_開(kāi)始匹配, 輸出efgh echo ${param1#*_} #從左相右匹配截取剩下的字符串*代表任意,類(lèi)似 .* 輸出efgh echo ${param1%gh} #從右向左匹配截取剩下的字符串,注意必須從末尾開(kāi)始算,也就是說(shuō)不能寫(xiě)個(gè)_e開(kāi)始匹配, 輸出 abcd_ef echo ${param1%_*} #從右向左匹配截取剩下的字符串*代表任意,類(lèi)似 .* 輸出abcd_ef echo ${param1:0-4} #從右向左匹配2個(gè),截取 輸入 efgh echo ${param1:0-4:2} #從右向左截取4個(gè),然后在從這4個(gè)中,從左向右截取2個(gè) 輸出 gh
數(shù)組
array=(a b c d) #數(shù)組的定義 echo ${array[*]} 或 echo ${array[@]} #輸出數(shù)組全部值 a b c d echo ${array[0} # a 下標(biāo)式輸出
數(shù)字的運(yùn)算,必須用 “`”這個(gè)符號(hào)包起來(lái),這不是單引號(hào),是反引號(hào)
echo `expr 1 + 1 ` #加 echo `expr 2 - 1 ` #減 echo `expr 2 \* 2` #乘 echo `expr 4 / 2 ` #除 echo `expr 5 % 2 ` #取余數(shù) let a=1+1 let b=2-1 echo $a $b # let 定義一個(gè)或多個(gè)表達(dá)式
if
流程控制
if [ ] ;#條件,注意空格 then #執(zhí)行 elif #條件 then #執(zhí)行 else #否 fi #結(jié)束標(biāo)簽 ! # 非 if [ $a !$b ] -a #and 與 if [ $a -a $b ] -o #or 或 if [ $a -o $b ] && # AND || # OR 數(shù)字的比較 -eq #檢測(cè)兩個(gè)數(shù)是否相等 -ne #檢測(cè)兩個(gè)數(shù)是否不相等 -gt #檢測(cè)左邊的數(shù)是否大于右邊的 -lt #檢測(cè)左邊的數(shù)是否小于右邊的 -ge #檢測(cè)左邊的數(shù)是否大于等于右邊的 -le #檢測(cè)左邊的數(shù)是否小于等于右邊的 字符串的比較 = 檢測(cè)兩個(gè)字符串是否相等 != 檢測(cè)兩個(gè)字符串是否不相等 -z 檢測(cè)字符串長(zhǎng)度是否為0 -n 檢測(cè)字符串長(zhǎng)度是否不為 0 $ 檢測(cè)字符串是否為空 文件夾比較 -e 判斷對(duì)象是否存在 -d 判斷對(duì)象是否存在,并且為目錄 -f 判斷對(duì)象是否存在,并且為常規(guī)文件 -L 判斷對(duì)象是否存在,并且為符號(hào)鏈接 -h 判斷對(duì)象是否存在,并且為軟鏈接 -s 判斷對(duì)象是否存在,并且長(zhǎng)度不為0 -r 判斷對(duì)象是否存在,并且可讀 -w 判斷對(duì)象是否存在,并且可寫(xiě) -x 判斷對(duì)象是否存在,并且可執(zhí)行 -O 判斷對(duì)象是否存在,并且屬于當(dāng)前用戶 -G 判斷對(duì)象是否存在,并且屬于當(dāng)前用戶組 -nt 判斷file1是否比f(wàn)ile2新 [ "/usr/test1.txt" -nt "/usr/test2.txt" ] -ot 判斷file1是否比f(wàn)ile2舊 [ "/usr/test1.txt" -ot "/usr/test2.txt" ]
for 循環(huán)
param=(1 2 3 4 5 6 7 8) for i in ${param[*]} # 這個(gè)in后面的要是輸出的形式展示 do echo $i # 1 2 3 4 5 6 7 8 done
while 循環(huán)
i=1 while(( $i<7 )) #當(dāng)這個(gè)條件成功,則不在執(zhí)行 do echo $i let "i++" # 1 2 3 4 5 6 done
break
跳出循環(huán)整個(gè)循環(huán)體都不在執(zhí)行,continue
跳過(guò)本次循環(huán)繼續(xù)下一個(gè)循環(huán),exit
結(jié)束腳本;函數(shù)方法
#定義函數(shù) function name(){ return 1 } name(){} name 1 2 #函數(shù)調(diào)用,(1,2)是傳入的參數(shù) param=$? #獲取函數(shù)renturn回來(lái)的值 echo $param #2 函數(shù)返回的值
感謝各位的閱讀,以上就是“如何使用sh腳本命令”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何使用sh腳本命令這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)頁(yè)名稱(chēng):如何使用sh腳本命令
本文網(wǎng)址:http://fisionsoft.com.cn/article/gipdcj.html