一、shell的相關知識:
1、對於shell編程語言大體分為:機器語言、匯編語言、高級語言
2、shell變量類型:事先確定數據的存儲格式和長度
shell變量分為:字符型、數值型
數值型又分為:整型、浮點型(在shell中一般不使用浮點型數值進行操作)
3、shell:弱類型編程語言
強:變量在使用前,必須事先聲明,甚至還需要初始化:
弱:變量用時聲明:也不需要區分類型:
顯式:明確要轉換成什麼類型:
隱式:不明確轉換成什麼類型,系統要看你進行什麼操作,它會自動給字符轉換成相應類型進行操作,例:11+c=?
默認shell中的變量不能進行運算 例:# C=$A+$B
4、變量賦值:VAR_NAME=VALUE
5、如何定義變量名稱:
a、只能包含字母、數字和下劃線,並且不能數字開頭;
b、不應該跟系統中已有的環境變量重名;
c、最好做到見名知義;
6、bash變量類型:
a 、環境變量
b、本地變量(局部變量)
c、位置變量
d、特殊變量
a、環境變量:作用域為當前shell進程及其子進程;
格式:export varname=value "導出"
b1、本地變量:作用域為整個bash進程;(隨時用隨時定義)
格式:變量名=:
b1、局部變量:作用域為當前代碼段;
格式:local 變量名=值
c、位置變量:$1(第一個參數),$2(第二個參數),...
例:./filetest.sh /etc/fstab /etc/inittab
第一個參數$1:/etc/fstab
第二個參數$2:/etc/inittab
shift:輪替,每執行一個shift就會踢出一個; 格式:shift [n] 可以一下踢出多個
例:./filetest.sh /etc/fstab /etc/inittab /etc/passwd /tmp/config.sh
使用shift 2 就表示把/etc/fstab和/etc/inittab踢出去,而後/etc/passwd就變成了第一個
d、特殊變量:
$?:上一個命令的執行狀態返回值;
$#:傳送給shell程序的位置參數的數量(參數的個數)
$*:調用shell程序時所傳送的全部參數的單字符串,“參數1”“參數2”…形式保存的參數列表
$@:“參數1”“參數2”...形式保存的參數列表