[Linux]shell編程基礎/linux基礎入門


聲明執行程序
#!/bin/bash

用來告訴系統使用/bin/bash 程序來執行該腳本。譬如python 腳本,可以這樣寫:

#!/usr/bin/python
 
賦值和引用

賦值公式:

變量名=值

取一個變量的值的時候,需要在變量名前面加上$ 符號,譬如:

var="hello bash"
echo $var

如果出現拼接,而且又沒有空格為分隔符,這個時候就需要使用大括號將變量括住,如:

num=3
echo "this is the ${num}th"

其輸出結果為:this is the 3th


shell默認下是進行字符串操作的。所以如果要計算的話就不能這么使用了

var=1
var=$var+1
echo $var

其輸出結果為:1+1

對於數值計算的話有下面的方法

var=1
let "var+=1"          # let表示數學運算
var="$[$var+1]"       # $[]表示對括號內的表達式進行數學運算,與(())感覺概念是一樣的
((var++))
var=$(($var+1))
var="$(expr "$var" + 1)"        # expr表示整數運算
var="`expr "$var" + 1`"
嫌太亂的話,建議記住(($var+1))就好了。只需要記住兩個括號內的內容會進行計算就好了。
 
流程控制

if語句

if ...; then
  ...
elif ...; then
  ...
else
   ...
fi


一些常見的判斷

[ -f "file_path" ]     # 判斷文件是否存在
[ -x "file_path" ]    # 判斷文件是否具有可執行權限
[ -n "$var" ]           # 判斷$var變量是否存在
[ "$var1" = "$var2" ]    # 判斷$var1和$var2是否相等

[]用來表示條件測試。注意空格,括號前后都需要空格。

&&和||
跟其它大部分語言一樣,&&和||的意思都是差不多的。
&&:如果第一個條件為ture則檢查第二個條件/執行第二條語句;
||:如果第一個條件為false則檢查第二個條件/執行第二條語句;
所以就可以這么用了:

[ -r "${file_path}" ] || { echo "Cannot read ${file_path}";exit 1; }

意思是,如果文件不可讀,則打印錯誤信息,並退出。

case語句
case是一個用來匹配字符串的表達式,不是數字哦。
case表達式

case ... in
...)
  ...;;
esac

例子

#!/bin/bash

case "$1" in
"1")
  echo 1;;
"2")
  echo "two";;
*)
  echo "your input is $1";;
esac



循環
while表達式

while ...; do
  ...
done

for表達式

for var in ...; do
  ...
done

這兩個表達式都比較簡單,沒啥需要特別說明的。我發現不同的系統之間有些差異。我發現紅帽是可以使用下面的表達式的,但是Debian卻不可以。不知道是系統版本引起還是系統本身存在差異的緣故,我沒有深究這個。

for ((i=0;i++;i<10)); do
  ...

done
 
shell函數
function_name(){
    #body of function
}

函數無論對於任何語言來說都是需要最基本掌握的。Shell的函數只需要在調用之前定義就好了。跟C語言一樣,但不需要聲明,跟C語言還是有區別的。
Shell函數定義的時候不用寫形參。調用的時候按照空格隔開多個參數傳入就可以了。然后使用$1、$2、$3...這些參數來調用。
下面是一個簡單的遞歸調用例子:

#!/bin/bash

recursion(){
  echo $1;
  if [ "$1" -eq "0" ]; then
    echo "done"
  else
    recursion $(($1-1))
  fi
}
echo "start";
recursion 5;
上面雖然是一個很簡單的例子,但是闡述了函數如何調用,如何傳參。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM