目錄 1.shell講解 2.變數 3.read,histroy命令 4.運算,字元比較,迴圈,判斷,函數,中斷 one.1 什麼是shell? shell是linux內核和用戶之間的解釋器,通常是/bin/bash cat /etc/shells可以看到當前系統支持的shell解釋器 one.2 ...
目錄
1.shell講解
2.變數
3.read,histroy命令
4.運算,字元比較,迴圈,判斷,函數,中斷
one.1 什麼是shell?
shell是linux內核和用戶之間的解釋器,通常是/bin/bash
cat /etc/shells可以看到當前系統支持的shell解釋器
one.2 互動式硬體設備
標準輸入:從設備接收用戶輸入的數據
標準輸出:通過設備向用戶輸出數據
標準錯誤:通過設備向用戶報告執行中的錯誤
one.3 重定向
改變標準輸入/輸出/錯誤輸出的方向
one.4 腳本構成
#!/bin/bash 腳本聲明,使用哪種解釋器
# 做註釋,寫註釋有助於整理思路和閱讀腳本
one.5 腳本執行方式
bash one.sh 執行腳本,不需要開頭寫解釋器
source one.sh 載入腳本,會將腳本中變數載入到當前
./one.sh 需要開頭寫解釋器
/root/one.sh 需要開頭寫解釋器
one.6 調試腳本
sh -x one.sh 查看腳本詳細執行過程
tow.1 變數類型
tow.2 環境變數
$HOSTNAME 主機名
$SHELL 當前預設解釋器
$PATH 環境變數
在linux中使用命令時,系統會查看環境變數,從環境變數顯示的那些文件夾中尋找是否有這個命令
$USER 當前用戶
$PWD 當前目錄
$HOME 家目錄的路徑
$LOGNAME 目前用戶
$RANDOM 生成隨機數
tow.3 位置變數
$0 腳本名
$1-9 附加參數1-9
例如bash one.sh xixi haha 那麼 xixi haha 就是$1與$2
$* 顯示所有位置變數
$# 顯示位置值得總數量
$$ d當前進程的PID
$? 上一個進程執行後的返回值,成功為0,失敗為非0
$! shell最後運行的後臺進程的PID
tow.4 特殊符號
"$abc" 雙引,引用整體
'$abc' 單引,引用整體,特殊字元不起作用
`ls -l` 返回反引號中執行的結果
${abc}de 變數用花括弧防止混淆
two.5 自定義變數
abc=hahaxixi 直接賦予值,等號2邊不能有空格,開頭不能數字,一般變數名為小寫,函數名為大寫。
PATH=$PATH/etc/bin/ 向變數中追加內容,必須/開頭才能追加
$abc 引用變數加$,這是和函數區分
echo $abc 查看abc這個變數的值
two.6 相關命令
/etc/profile或~/.bash_profile 環境變數配置文件
env 列出環境變數
set 列出所有變數
three.1 read命令
read -p "請輸入:" name -p後面加上提示符,name為變數名,存儲輸入的字元
-s 輸入的數值不可見
-t 3 設置時間為3秒,超時值為空
-n 3 設置字元輸入字元數量,達到3立刻執行
stty -echo 關閉顯示,之後的輸入將不可見,通常用戶輸入密碼前設置
stty echo 開啟顯示
three.2 歷史命令
history 查看歷史命令,預設存儲1000條,在/etc/profile中HISTORY變數修改
!cat 執行以cat開頭最近的那條歷史命令
!100 執行第100條歷史命令
three.3 小命令
export abc 將局部變數變成全局變數
export -n abc 取消變數的全局屬性
unset abc 取消這個變數的值
a;b 分隔符,每個單獨執行
a&&b a執行成功才執行b
a||b a執行失敗才執行b
例子,[ a == a ] && echo "yes" || echo "no"
test abc == abc相當於[ abc == abc ]
seq 1 2 10 從1到10列印一遍,只列印1,3,5,7,9其中2為步長,前一個數+2
four.1 運算
% 取餘數,餘數小於被除數字,例如echo $[26%4],餘2
expr 1 + 3 做運算,+-*/,*需要用\*來表示,不然表示為所有
echo $[1*5] 其中數值不用加$,例如echo $[x*y],**代表指數
let i++ 不顯示結果,製作運算
i++相當於 i=i+1
i+=1相當於i=i+1
表達不同會有先後順序,計算結果也不同
x=43 ; y=21 ;echo $[++x],$[--y]
44 20
x=43 ; y=21 ;echo $[x++],$[y--]
43 21
bc 計算器,也可以用管道來非互動式計算
echo "scale=2;10/3" |bc scale為保留小數點3位
echo "3>2"|bc 會返回0和1,正確為0
four.2 比較
[ -s /etc/passwd ] 判斷是否存在
[ 1 -le 6 ] 整數比較
[ "abc" == "def" ] 字元串比較,通常用戶密碼的核對
four.3 迴圈
for i in {1..10} i是變數名,{1..10}是列表,for迴圈根據列表迴圈10次
do
echo "1" 命令
done 結尾格式
for ((i=1;i<5;i+=2)) c語言風格for迴圈,步長為2
while [ 1 -eq 1 ] 條件為真則一直執行到條件為假
do
echo "1"
done
four.4 判斷
if [ 1 -eq 10 ];then 符合條件執行語句
echo "1"
elif [ 1 -eq 2 ];then 符合才執行
echo "2"
else 都不符合則執行
echo "3"
fi 結尾
case i in i為變數,當符合下麵其中一個選項時則執行
stop)
echo "1" ;;
start)
echo "2" ;;
restart)
echo "3" ;;
esac
four.5 函數
function abc{ function為格式,abc則是變數名,當一些命令重覆出現時可以寫入函數,下次直接調用,簡潔。
echo "$1"
}
abc() { 另一種簡便寫法
echo "$1"
}
abc xixi 輸入函數名即可執行,也可定義位置變數並調用
.(){.|.&};. shell版本fork炸彈,迅速耗盡系統資源
four.6 中斷
five.5 聲明
以上內容大部分來自達內PPT的資源,這裡為收集整理!