1. 程式人生 > >7、read的使用和while循環

7、read的使用和while循環

read while循環

read使用
如下實例,如果給的變量和參數個數一樣就對應給變量賦值(如下圖1),如果變量多了,對應賦值,後面的變量為空(如下圖3)
如果變量少了,就對應賦值,最後一個變量全部賦值給剩余的參數(如下圖2)

技術分享圖片

下面-n是不換行

技術分享圖片

有時候想要結合echo和read去使用一種顏色的輸入顯示就可以這樣做;如下技術分享圖片

技術分享圖片技術分享圖片

read (read是bash的內部命令,可以用help read來查看幫助)
-p:“提示信息”
-t:“設置超時時間”

技術分享圖片

-z 是判斷變量是否為空,是空為真,不空為假
上面表示5秒如果不輸內容,自動給a b賦值 100 和1000

實例(選擇文檔進行歸檔,並選擇想要的歸檔格式):這樣我們就可以更好的和腳本交互了

技術分享圖片

腳本如上,測試如下
技術分享圖片

腳本編程三種控制結構:
順序結構
選擇結構
if
if ;then
elif
else
fi

case
case $# in
)
statement
;;
esac
循環結構

for
for I in {};do
statement
done
while
while condition;do
statement
done
until

接下來講一下while循環
while ture; do
done
for循環一般是循環已知的循環,但是while就是適用於循環次數未知的場景

我們的for循環的CONDITION是有個自我修正的,不斷的變化的,所以總會有退出循環的時候,而我們的while循環不一樣,它是不會自我修正的,如果在statement中沒有去處理,那他就一直循環下去

while:循環:適用於循環次數未知的場景
語法:
while CONDITION;do
statement
...
done
計算100以內所以整數的和
[root@www tmp]# cat ./1.txt
#!/bin/bash
declare i I=1
declare i SUM=0
while [ $I -le 100 ] ;do
let SUM+=$I
let I++ 這種情況下就需要在while循環內讓條件不循環,這個就是遍歷循環,必須要有這一種條件,不然會一直死循環
done
echo $SUM

當輸入quit就退出,否則就將輸入變成大寫的再輸出來
#!/bin/bash
read -p "input zimu:" NUM

while [ ! $NUM == ‘quit‘ ];do
echo $NUM | tr ‘a-z‘ ‘A-Z‘
read -p "input zimu:" NUM
done

檢測hadoop有沒有登錄,如果沒有登錄,一直跳出信息來說Hadoop沒登錄,直到Hadoop登錄為止

技術分享圖片

所以要明白循環的進入條件和退出條件的意義了
[root@www tmp]# vim checkuser1.sh
#!bin/bash

who | grep "user1" &>/dev/null
jieguo=$?

while [ $jieguo -ne 0 ];do
echo "user1 is not logging"
sleep 1
who | grep "user1" &>/dev/null
jieguo=$?
done
echo "user1 is logged in."

7、read的使用和while循環