用Shell編寫for循環和while循環案例

(1)Shell中的單引號和雙引號區別

  A="www.jfedu.net"

  B='$A'

 echo $B

註釋: 

           把www.jfedu.net賦值給變量A, 把變量A的內容賦值給變量B,打印出變量B的結果,打印出的結果爲$A

           因爲變量A是一個弱引用,引用的結果只是一個字符


A="www.jfedu.net"

B="$A"

echo $B

註釋:

            把www.jfedu.net賦值給變量A, 把變量A的內容賦值給變量B,打印出變量B的結果,打印出的結果爲www.jfedu.net

            因爲變量A是一個強引用,變量B的引用結果是www.jfedu.net,而不是一個字符


(2)for循環語法格式

    for  var  in (表達式)

    do

            語句

    done


(3) 用for循環打印1到100

    for i   in  `seq 1 100`

    do

        echo $i

    done


 註釋: 單引號和雙引號只適用於變量引用,涉及到計算,不能用單引號和雙引號

  

拓展

     用for循環打印1到100另外二種寫法

  for  i   in  $(seq 1 100)

  do

     echo $i

  done


  for i  in  `echo  {1..100}`

  do

     echo $i

  done

 註釋: echo後面不要忘記加空格,不加空格,會報錯


(4) 用for循環讀取文件內容,並打印到屏幕上

 for i  in  `cat list.txt`

 do

     echo $i

done


(5) 用for循環批量到遠程主機執行命令

  command="$*"

  for  i   in   `seq 1 100`

  do

     ssh -l  root  192.168.1.$i  "$command"

  done


(6)用for循環批量到遠程主機傳輸文件

 files="$*"

  for  i   in  `seq 1 100`

 do

  scp -r $files [email protected].$i:/tmp

done


(7)用for循環輸出1到100的和

 j=0

for i  in  `seq 1 100`

do

   j=`expr $i+$j`

done

echo $j


(8) while循環格式

  while  (表達式)

  do

      語句

 done


(9) 用while循環讀取文件列表內容,並把結果打印在屏幕上

 while read line

 do

      echo $line

 done<list.txt


(10) 用while循環,每隔一秒在屏幕上輸出hello  word

  while  sleep 1

  do

      echo "hello word"

  done


(11) 用while循環,打印1到100

  i=0

 while(i<=100)

 do

     echo $i

      i=`expr $i+1`

 done


(12) while循環打印1到100的和

  j=0

  i=1

  while(i<=100)

  do

       j=`expr $i+$j`

       ((i++))

 done

  echo $j 


拓展: ssh免祕鑰登錄到遠程服務器

  (1) 在本機上創建ssh-keygen


  (2) 拷貝公共祕鑰到“被登錄機”,輸入密碼

     ssh -l  root   192.168.1.5  id_rsa.pub


  (3)  ssh到“被登錄機”把公共祕鑰輸入到“authorized _keys”(如果有多個機器都需要使用rsa祕鑰認證登錄到此機的話,把產生的公共祕鑰輸入到authorized_keys)

     cat   id_rsa.pub  >>  authorized_keys

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章