您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何使用sh腳本命令”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用sh腳本命令”吧!
#!/bin/bash
文件第一行,提示電腦后面的代碼需要用 /bin/bash 來解讀
echo
輸出內容,
param=$(cat ./test.txt)
變量賦值,參數名\等號\值,三個之間不能有空格,如果需要得到某夠命令獲取的信息作為值,都可以用這種方式,變量=$(命令);
變量賦值單引號與雙引號的區別,單引號不會轉義內容,雙引號會轉義內容;
變量的使用 $param
或者 ${param}
即可使用;
獲取用戶輸入值
echo "請輸入你想要輸入的值" read inputValue echo $inputValue #這里打印出來的就是用戶輸入的值 param=$inputValue #這里將用戶輸入的值賦給了param echo $param #這里打印出來的也是用戶輸入的值
sh 下標傳入參數 sh ./test.sh a b
#!/bin/bash echo $0 # test 執行的文件名 echo $1 #a 第一個參數 echo $2 #b 第二個參數 可以繼續寫 echo $# #2 傳遞到腳本的參數個數 echo $* #a b 以一個單字符串顯示所有向腳本傳遞的參數 echo $$ # 當前的進程號 echo $! #d 后臺運行的最后一個進程號 ..
getopts
sh腳本傳參數方法,如:test.sh -a 1
創建腳本 test.sh
#!/bin/bash while getopts "a:w:p:n" arg; #這里設定了參數必須是-a;-w;-p;-n這幾個參數名,后面的冒號表示必須傳入參數 do case $arg in a ) #所有版本號統一 parms1="$OPTARG" ;; w ) #前端版本號 parms2="$OPTARG" ;; p ) #php版本號 parms3="$OPTARG" ;; n ) #最新版本號 parms4=1 ;; ? ) echo "未知參數: -a; -w ; -p ; -n " exit esac done
例如執行 sh ./test.sh -a 1
可以選擇參數名-a 就必須傳入參數 1,-n則可以不用參數;
字符串的操作
param='abcd_'; param1="$param"'efgh' #拼接字符串,直接跟著寫即可 echo $param1 #abcd_efgh echo ${#param1} #計算字符串長度 輸出 9 echo ${param1:1:4} #截取字符串 從1號下標開始到4號結束 輸出 bcd_ 都知道下標從0開始的吧 echo ${param1#abcd_} #從左相右匹配截取剩下的字符串,注意必須從頭開始算,也就是說不能寫個d_開始匹配, 輸出efgh echo ${param1#*_} #從左相右匹配截取剩下的字符串*代表任意,類似 .* 輸出efgh echo ${param1%gh} #從右向左匹配截取剩下的字符串,注意必須從末尾開始算,也就是說不能寫個_e開始匹配, 輸出 abcd_ef echo ${param1%_*} #從右向左匹配截取剩下的字符串*代表任意,類似 .* 輸出abcd_ef echo ${param1:0-4} #從右向左匹配2個,截取 輸入 efgh echo ${param1:0-4:2} #從右向左截取4個,然后在從這4個中,從左向右截取2個 輸出 gh
數組
array=(a b c d) #數組的定義 echo ${array[*]} 或 echo ${array[@]} #輸出數組全部值 a b c d echo ${array[0} # a 下標式輸出
數字的運算,必須用 “`”這個符號包起來,這不是單引號,是反引號
echo `expr 1 + 1 ` #加 echo `expr 2 - 1 ` #減 echo `expr 2 \* 2` #乘 echo `expr 4 / 2 ` #除 echo `expr 5 % 2 ` #取余數 let a=1+1 let b=2-1 echo $a $b # let 定義一個或多個表達式
if
流程控制
if [ ] ;#條件,注意空格 then #執行 elif #條件 then #執行 else #否 fi #結束標簽 ! # 非 if [ $a !$b ] -a #and 與 if [ $a -a $b ] -o #or 或 if [ $a -o $b ] && # AND || # OR 數字的比較 -eq #檢測兩個數是否相等 -ne #檢測兩個數是否不相等 -gt #檢測左邊的數是否大于右邊的 -lt #檢測左邊的數是否小于右邊的 -ge #檢測左邊的數是否大于等于右邊的 -le #檢測左邊的數是否小于等于右邊的 字符串的比較 = 檢測兩個字符串是否相等 != 檢測兩個字符串是否不相等 -z 檢測字符串長度是否為0 -n 檢測字符串長度是否不為 0 $ 檢測字符串是否為空 文件夾比較 -e 判斷對象是否存在 -d 判斷對象是否存在,并且為目錄 -f 判斷對象是否存在,并且為常規文件 -L 判斷對象是否存在,并且為符號鏈接 -h 判斷對象是否存在,并且為軟鏈接 -s 判斷對象是否存在,并且長度不為0 -r 判斷對象是否存在,并且可讀 -w 判斷對象是否存在,并且可寫 -x 判斷對象是否存在,并且可執行 -O 判斷對象是否存在,并且屬于當前用戶 -G 判斷對象是否存在,并且屬于當前用戶組 -nt 判斷file1是否比file2新 [ "/usr/test1.txt" -nt "/usr/test2.txt" ] -ot 判斷file1是否比file2舊 [ "/usr/test1.txt" -ot "/usr/test2.txt" ]
for 循環
param=(1 2 3 4 5 6 7 8) for i in ${param[*]} # 這個in后面的要是輸出的形式展示 do echo $i # 1 2 3 4 5 6 7 8 done
while 循環
i=1 while(( $i<7 )) #當這個條件成功,則不在執行 do echo $i let "i++" # 1 2 3 4 5 6 done
break
跳出循環整個循環體都不在執行,continue
跳過本次循環繼續下一個循環,exit
結束腳本;
函數方法
#定義函數 function name(){ return 1 } name(){} name 1 2 #函數調用,(1,2)是傳入的參數 param=$? #獲取函數renturn回來的值 echo $param #2 函數返回的值
感謝各位的閱讀,以上就是“如何使用sh腳本命令”的內容了,經過本文的學習后,相信大家對如何使用sh腳本命令這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。