shell腳本的超級簡單實用入門

什麼是shell腳本(shell script)

簡單來說就是將在Linux中命令行整合成一個程序,這就是shell script

如何使用shell script

first step:開始編輯shell script

有多種編譯方式,這裏我們可以使用vim來編輯


vi filename

second step: 進入編輯器

在編輯器中,我們可以使用i來開始編輯,用 :wq 來保存並退出,不想保存時可以用 :q 直接退出。


#!/bin/bash

我們使用以上代碼段開頭來表示編譯器的選擇,不可缺少。

third step: 開始輸入你要做的內容

forth step: 如何運行

首先先進行編譯

>>sudo chmod u+x filename.sh 

編譯成功後,使用ls你會發現文件名被高亮。 之後我們可以通過./來進行運行

>>./filename.sh par1 par2 

par1代表傳入參數1,par2代表傳入參數2,…以此類推,可以傳多個參數

下面補充一些常用的小Tips

簡單介紹一下

  1. 賦值採用

var_name=…

var_name可以隨意你定,注意等號前不要跟空格


如果有var=var+1之類的寫法,會報錯,應該寫爲

let var=var+1


  1. for循環

基本框架


for var in array#var爲你要遍歷的東西,array爲你要遍歷的範圍,用法類似於python
do
	if ...
	then
		...
	else
		...
fi
done
  1. 函數用法

#函數定義

function function_name(){ 

	...

	#函數遞歸調用:par1爲參數1,par2爲參數2

	function_name par1 par2 ...
	...
}
#函數調用:par1爲參數1,par2爲參數2

function_name par1 par2 ...
  1. 符號介紹

“ * ”表示通配符,用於匹配字符串將被刪除的字串。

“.”表示字符串中分隔符,可以爲任意一個或 多個字符。

“%”表示從右向左匹配,

“#”表示從左向右匹配,

“ \ ”表示替換,都屬於非貪婪匹配,即匹配符合通配符的最短結果。

與“%”、“#”和“/”
類似的有“%%”、“##”和“//”,都屬於貪婪匹配,即匹配符合通配符的最長結果。

舉幾個栗子哈:

#刪除VALUE字符串中以分隔符“.”匹配的右邊字符,保留左邊字符。
${VAR%.*}${VAR%%.*}
#VAR代表變量名,%代表從右往左匹配,“.*"表示刪除"."後面的字符。而外部的${}代表取值

#刪除VALUE字符串中以分隔符“.”匹配的左邊字符,保留右邊字符。
${VALUE#*.}或${VALUE##*.}:
#VAR代表變量名,%代表從右往左匹配,“.*"表示刪除"."後面的字符。而外部的${}代表取值
${VALUE/OLD/NEW}${VALUE//OLD/NEW}

補充:${#VALUE}:計算VALUE字符串的字符數量。

  1. 參數的使用

使用shell腳本的時候,我們可以傳入一些參數進去。


>>./filename.sh par1 par2 ...

其中par1代表的是參數1,par2是參數2,那在shell腳本內,我們該怎麼調用呢?

echo $1 #表示輸出參數1
echo $2 #表示輸出參數2
	....

這裏大家應該比較清楚了,$1代表的是參數一。$2代表的是參數2…以此類推

  1. 變量的使用
    shell裏的變量的使用方法比較類似於Python,在使用時不需要聲明類型。
    比如我們要定義一個目錄爲pDir目錄下的文件file,我們可以這麼寫
#假設pDir="/home",file=filename
dir=$pDir"/"$file

這段代碼將dir賦值爲file的路徑。此時dir的值爲“/home/filename"。
這裏我們使用用**$**表示取值。

我們可以嘗試另一段代碼感受一下

#假設pDir="/home",file=filename
dir=pDir"/"file

此時dir的值將被定義爲"pDir/file"

這樣大家應該能感受到以下幾點
1. 變量類型無需聲明,直接使用varname=value這樣的賦值即可。
2. varname作爲參數時,(如echo varname)將被解析爲一個字符串如(”varname")  
3. 當我們想要得到value時,我們需要echo $varname,使用 "$"符號進行取值

這篇博客差不多就寫到這拉,算是個入門的大雜燴,想要系統的學習還是需要花很多時間的
有問題歡迎google,或者留言聯繫。

附上一些較好的參考博客:
shell變量、賦值和運算
https://www.cnblogs.com/ladawn/p/8412553.html
處理shell腳本輸入參數:
https://www.jianshu.com/p/761b19247979
shell字符串處理技巧:
https://blog.csdn.net/mountaindancer/article/details/78519998
shell echo:
https://blog.csdn.net/vip_wangsai/article/details/72592649
shell 循環:
https://www.cnblogs.com/zhangmingcheng/p/5812750.html
python參數獲得:https://www.cnblogs.com/saiwa/articles/5253713.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章