shell腳本基礎----變量
阿新 • • 發佈:2018-08-01
實現 退出狀態 一個 ffffff image his tor 不能 字符串表
1.1shell的定義
1.命令的堆積
2.特定的語法與特定的命令組成的文件
執行腳本命令
bash test.sh 不需要添加執行權限,使用解釋器直接解釋
sh tesh.sh
./tesh.sh 相對路徑,需要添加執行權限
1.2shell腳本基礎---變量
變量:用一個固定的字符串表示不固定的內容
變量名稱註意事項
1.不能以數字開頭(包含字母、數字、下劃線)
2.不能使用程序中的保留字(例如:if for)
3.不能跟系統中已有的環境變量重名(盡量不要全部使用大寫,盡量不要用‘_’下劃線開頭)
4.見名知義
變量類型
"字符型" 例如:a=abc "數字型" 整型 浮點型,例如:a=1.1 "布爾型“(是否) true false
變量操作
設置變量
引用變量
$變量名
${變量名}
**bash特性**
"反斜杠 \ 使反斜杠後面的一個變量變為字符串"
"單引號 ’ 轉義其中所有的變量為單純的字符串"
"雙引號 "" 保留其中的變量屬性,不進行轉義處理"
"反引號 `` 把其中放入命令執行後返回結果"
撤銷變量(unset a 作用範圍:僅在當前shell中有效)
bash變量類型
環境變量
export 作用域為當前shell進程及其子進程
本地變量(局部變量)
"Var_name=valuue" 本地變量,作用域為當前shell進程。對當前shell外的其他shell進程,包括當前shell的父shell,子shell進程均無效 "Local var_name=value" 局部變量,作用域為當前代碼段,常用於函數
位置變量
$1,$2 用於引用腳本的參數
shirt 依此向前推進
特殊變量(bash內置的,用來保存某些特殊數據的變量,也稱系統變量)
"$# 是傳給腳本的參數的個數" "$0 是腳本本身的名字" "$! 是shell最後運行的後臺Process的PID" "$@ 是傳給腳本的所有參數的列表" "$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個" "$$ 是腳本運行的當前進程ID號 " "$? 是顯示上條命令的退出狀態,0表示沒有錯誤,其他表示有錯誤"
bash內建環境變量
"[root@yaoxiaorong ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@yaoxiaorong ~]# echo $SHELL
/bin/bash
[root@yaoxiaorong ~]# echo $UID
0
[root@yaoxiaorong ~]# echo $HISTSIZE
1000
[root@yaoxiaorong ~]# echo $HOME
/root
[root@yaoxiaorong ~]# echo $PWD
/root
[root@yaoxiaorong ~]# echo $HISTFILE
/root/.bash_history
[root@yaoxiaorong ~]# echo $PS1
[\u@\h \W]\$ "
只讀變量
readonly 不能修改值,不能銷毀,只能等shell進程
腳本基礎
定義:按實際需求,結合命令流程控制機制實現的源程序
程序返回值
程序執行的結果
程序狀態返回代碼(0-255)
0:正確執行
1-255:錯誤執行,1、2、127系統預留,有特殊意義
腳本測試
bash -n test.sh 檢查腳本是否有語法錯誤
bash -x test.sh 單步執行,檢查腳本錯在那裏
寫腳本註意事項
禁止將未成功執行過的代碼直接寫進腳本
腳本中的命令一定要用絕對路徑
shell算術運算
A=3
B=6
let C=$A+$B 表達式
C=$[$A+$B] 表達式
C=(($A+$B)) 表達式
C=` expr $A + $B ` 算術運算表達式,表達式各操作及運算符之間要有空格,而且要使用命令引用
shell腳本基礎----變量