一、交互輸入 1、命令用法:read a b c -> aa bb cc read命令同時可以定義多個變數值;而輸入的內容預設以空格為分隔符,將值輸入到對應的變數中;如果預設值輸入過多,最後所有的值都會被賦予給最後一個變數;如果輸入的值少於變數數,多餘的變數則為空值 2、常用參數: -p read ...
一、交互輸入
1、命令用法:read a b c -> aa bb cc
read命令同時可以定義多個變數值;而輸入的內容預設以空格為分隔符,將值輸入到對應的變數中;如果預設值輸入過多,最後所有的值都會被賦予給最後一個變數;如果輸入的值少於變數數,多餘的變數則為空值
2、常用參數:
-p read -p “請輸入一個值:” 變數名 === echo -n “請輸入一個值:” ; read 變數名
-t 定義超時時間 read -t 5 -p “請輸入一個值:” 變數名
二、while語句
1、while語句語法格式
定義初始值 while 條件判斷;do 迴圈體 值變化語句 done
練習
i=1 while (( $i<=5 ));do echo $i let i++ done
2、其他兩種特殊語句格式
第一種:
while read 變數;do 迴圈體 done <</path/filename
第二種.死迴圈:
while true;do 迴圈體 done
break 打斷迴圈
continue 打斷本次迴圈,開始下次迴圈
sleep 延時迴圈
三、until語句
與while用法相同
與while的區別是,只有判斷條件為False時候,才會進入迴圈
四、for語句迴圈
1、for語句的應用場景:
某功能需要迴圈執行,只是執行對象不同,(數據對象必須是同類)
2、for語句格式:
for 變數 in 條件列表;do 迴圈體 done
3、列表的生成方式
a) 直接給出字元串列表
for i in a b c d e;do 迴圈體 done
b) 整數列表
{start .. end} : 例:{1..9} seq :命令引用 $(seq [start [步長]] end) 例:seq 20 2 30輸出20 22 24 26 28 30
c) 返回列表命令
$(COMMAND)
應用場景例:判斷/var/log的所有文件,以.log結尾的文件統計處理
#!/bin/bash # declare -i sum=0 for i in $(ls /var/log/);do if [[ $i = "*.log" ]];then echo $i let sum++ fi done echo "統計.log結尾的文件有:$sum"
d) glob機制:---- 文件通配符的機制
e) 變數引用:----傳參
$@ $* 將參數作為for迴圈的列表
$0 代表運行的腳本文件 awk中$0代表整行內容
需要多個次的時候用$@ ,需要一個詞的時候用$*
4、擴展:for語句的另一種寫法(基於C語言的寫法)
for((i=0;i<10;i++));do 迴圈體 done