標籤:bsp cal 進階 ase dog 為什麼 pts shel i++
視頻連結:
1. 什麼是 Shell Script (shell寫的指令碼)
1.1 幹嘛學習 shell scripts? ()
1.2 第一支 script 的撰寫與執行
1.3 撰寫 shell script 的良好習慣建立
2. 簡單的 shell script 練習: (read -p date)
3. 善用判斷式:
3.1 利用 test 指令的測試功能
3.2 利用判斷符號 [ ]
3.3 Shell script 的預設變數($0, $1...)
4. 條件判斷式:
4.1 利用 if .... then
4.2 利用 case ..... esac 判斷
4.3 利用 function 功能
5. 迴圈 (loop)
5.1 while....do....done, until....do....done
5.2 for...do...done
6. shell script 的追蹤與 debug
第一個shell scripts的撰寫,我們寫入一個test.sh的文檔內
#!/bin/bash
PAth=自己echo $PATH一下
ecport PATHecho -e "Hello shuyunquan \n"exit 0
然後這樣執行
bash test.sh
接下來來一個進階的scripts吧,我們加入一個read
test命令 其實就是判斷的用途,我列出常用的參數,然後再舉個例子
[] 命令,也是判斷用的,有趣的是,test命令的參數[]都能用
[]需要注意的幾點
我們來練習一道例題
1. 當執行一個程式的時候,這個程式會讓使用者選擇 Y 或 N ,
2. 如果使用者輸入 Y 或 y 時,就顯示『 OK, continue 』
3. 如果使用者輸入 n 或 N 時,就顯示『 Oh, interrupt !』
4. 如果不是 Y/y/N/n 之內的其它字元,就顯示『I don‘t know what is your choise』
#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesexport PATHread -p "請輸入(Y/N):" yn[ "$yn" == "Y" -o "$yn" == "y" ] && echo "ok,continue" && exit 0[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit 0echo "我不信這個也能出來" && exit 0
shell scripts的預設變數($0 $1 $2)
這個理解起來很簡單,指令碼名稱就是$0 然後第一個參數就是$1 第二個參數就是$2 ...以此類推
好,我們來個簡單的例子
#!/bin/bashecho "The scripts name is $0"[ -n "$1" ] && echo "第一個參數是: $1" || exit 0[ -n "$2" ] && echo "第二個參數是: $2" || exit 0
if...then
if [ ] ; then
......
elif [ ] ; then
.......
else
........
fi
exit 0
#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesexport PATHread -p "請輸入(Y/N):" ynif [ "$yn" == "Y" -o "$yn" == "y" ];then echo "ok,continue"elif [ "$yn" == "N" -o "$yn" == "n" ];then echo "oh,intsdsd" else echo "我不信這個也能出來" fiexit 0
case ... in ... esac
#!/bin/bashcase $1 in "hello") echo "hello,how are you" ;; "") echo "你必須輸入參數" ;; *) echo "要輸入hello啊" ;;esac
function 函數
#!/bin/bashfunction h(){ echo "蜀雲泉好帥啊 $1" //function函數也有變數,$1就是函數的參數,這個和指令碼的變數不同}case $1 in "one") h 1 ;; "two") h 2 ;; "three") h 3 ;; *) echo "只能用123" ;;esac
迴圈loop
while do done 注意,while裡面的判斷式! 符合while條件的才進去迴圈
#!/bin/bashread -p "請輸入一個數字:" numberi=0s=0while [ "$i" -lt "$number" ] //這裡的小於符號是 -lt 注意!doi=$(($i+1)) //這裡為什麼要兩個()?因為()有運算的意思s=$(($s+$i))doneecho -e "‘1+2+...+$number‘ 的結果是: $s "
大家可以試試echo (1+2)是不會出來3的,而echo ((1+2))才會出來3,所以()有一個整體運算的意思
untile do done 條件不符合的才進去
for...do...done 下面是第一種用法
#!/bin/bashs=0for((i=1;i<=100;i++))do s=$(($s+$i))doneecho $s
for的第二種用法 animal會迴圈依次顯現三種內容
#!/bin/bashfor animal in dog cat elephantdo echo "這次的動物是 $animal"done
shell script的追蹤與debug
就是你寫的指令碼有沒有問題,bash內建參數就能檢查
鳥哥的Linux私房菜——第十六章:學習Shell Scripts