麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Linux Shell > 正文

shell中的for循環(huán)用法詳解

2020-07-26 23:25:23
字體:
供稿:網(wǎng)友

for 命令:

for i in 的各種用法 :

  • for i in “file1” “file2” “file3”
  • for i in /boot/*
  • for i in /etc/*.conf
  • for i in $(seq -w 10) --》等寬的01-10
  • for i in {1…10}
  • for i in $( ls )
  • for I in $(< file)
  • for i in “$@” --》取所有位置參數(shù),可簡(jiǎn)寫為for i

注意:bash shell支持C式for循環(huán)

#!/bin/bashj=$1for ((i=1; i<=j; i++))dotouch file$i && echo file $i is okdone
  • $@: 所有位置變量的內(nèi)容
  • $#: 位置變量的個(gè)數(shù)
  • $0: 文件名
  • $*: 所有位置變量的內(nèi)容

編寫腳本應(yīng)該注意的事項(xiàng):

  1. 開頭指定使用什么shell,例如:bash,ksh,csh等
  2. 腳本功能描述,使用方法,作者,版本,日期等
  3. 變量名,函數(shù)名要有實(shí)際意義,函數(shù)名以動(dòng)名詞形式,第二個(gè)單詞首字母要大寫。例如:updateConfig()
  4. 縮進(jìn)統(tǒng)一用4個(gè)空格,不用TAB
  5. 取變量值使用大括號(hào),如${varname}
  6. 刪除文件時(shí),如果路徑有變量的,要判斷變量有值,如rm -f ${abc}/* 如果變量abc沒有值,則會(huì)把根目錄下的文件刪除
  7. 腳本中盡量不要使用cd變換目錄
  8. 函數(shù)中也要有功能描述,使用依法,版本,日期等
  9. 函數(shù)的功能要單一,不要太復(fù)雜
  10. $()比` `更好
  11. 盡量不要使用多層if語句,而應(yīng)該以case語句替代
  12. 如果需要執(zhí)行確定次數(shù)的循環(huán),應(yīng)該用for語句替代while語句
  13. 輸入的參數(shù)要有正確性判斷
  14. 多加注釋,方便自己或他人閱讀。

練習(xí)1:編寫腳本清空所有arp緩存記錄:

#!/bin/bashfor i in $(arp | tail -n +2|tr -s ' ' |cut -d' ' -f1)do  arp -d $idone

練習(xí)2:產(chǎn)生十個(gè)隨機(jī)數(shù):
方法1:

for i in {0..9};do echo $RANDOM;done

方法2:

for i in $(seq 10);do echo $RANDOM;done

練習(xí)3:倒數(shù)五秒:

#!/bin/bashecho "準(zhǔn)備倒數(shù)5秒:"for i in $(seq 5 -1 1)do  echo -en "$i";sleep 1doneecho -e "開始"

方法2:

#!/bin/bashecho "準(zhǔn)備倒數(shù)5秒:"for i in $(seq 5 -1 1)do  echo -en "/b$i";sleep 1doneecho -e "/b開始"

練習(xí)4:批量添加用戶:

#!/bin/bashfor i in $(cat /root/users.txt)    --》從列表文件讀取文件名do  useradd $i  echo "123456" | passwd --stdin $i --》通過管道指定密碼字串done

練習(xí):
查找出uid大于10000的用戶,然后刪除,必須使用for循環(huán)。

#/bin/bashu_uid=(`cat /etc/passwd | awk -F: '{print $3}'`)u_name=(`cat /etc/passwd | awk -F: '{print $1}'`)for i in `seq ${#u_uid[@] }`do  if (( ${u_uid[i-1]} > 10000 ))  then      userdel -r ${u_name[i-1]}&&echo "${u_name[i-1]} delete ok"  fidone

方法2:用正則找出大于10000的用戶:

cat /etc/passwd | egrep “1[0-9]{4} | [2-9]{5,}”

例子:根據(jù)ip地址檢查網(wǎng)絡(luò)中存活的主機(jī)ip。

break語句:(跳出循環(huán))

  • 在for、while、until等循環(huán)語句中,用于跳出當(dāng)前所在的循環(huán)體,執(zhí)行循環(huán)體后的語句

continue語句:(跳出本次循環(huán))

  • 在for、while、until等循環(huán)語句中,用于跳出循環(huán)體內(nèi)余下的語句,重新判斷條件以便執(zhí)行下一次循環(huán)。

練習(xí):使用for循環(huán)實(shí)現(xiàn)批量添加用戶

#!/bin/bashfor i in $(cat /root/users.txt) --》從列表文件讀取文件名do    useradd $i  echo “123456”| passwd $i --stdin  --》通過管道指定密碼UNAMEdone

(ps:判斷用戶是否存在:id命令)

位置變量

  1. 位置變量:$n ,但是大于9的位置參數(shù)要用{}括起來:${10}
  2. 位置變量的作用:其實(shí)就是傳遞參數(shù)到腳本里
  3. $0 --》代表的是腳本自己的名字

(位置變量的最常用用法:bash 1.sh 變量1 變量2…)

預(yù)定義變量:

  • $#:命令行中位置變量的個(gè)數(shù)
  • $*:所有位置變量的內(nèi)容(較少使用)
  • $@:所有位置變量的內(nèi)容
  • $0:當(dāng)前執(zhí)行的進(jìn)程/程序名
  • :當(dāng)前shell的PID值,echo
  • :當(dāng)前shell的PID值,echo
  • ; ps $$, 常用作臨時(shí)變量的后綴
  • $?:上一條命令執(zhí)行后返回的狀態(tài),當(dāng)返回狀態(tài)值為0時(shí)表示執(zhí)行正常,非0值表示執(zhí)行異?;虺鲥e(cuò)
  • $RANDOM :隨機(jī)數(shù),可以作為臨時(shí)文件名

例:輸出0-9以內(nèi)的隨機(jī)數(shù)

主站蜘蛛池模板: 国产在线播放91 | 欧美日韩国产成人在线观看 | 成人午夜免费网站 | h网站在线观看 | 国产91对白叫床清晰播放 | 韩国精品一区二区三区四区五区 | 精品国产乱码一区二区三区四区 | 国产精选91| 91福利影视| 午夜视频在线免费 | 偿还电影免费看 | 国产系列 视频二区 | 色无极影院亚洲 | 亚洲一区二区网址 | 男女生羞羞视频网站在线观看 | 九一国产精品 | 国产精品视频久 | 日韩在线毛片 | 国产电影精品久久 | 欧美a视频 | 国产在线播放91 | 国产精品久久久久久久午夜片 | 欧美一级特黄aaaaaaa什 | 久久精品亚洲精品国产欧美kt∨ | 97超碰资源站 | 亚洲一级电影在线观看 | 久久爽精品区穿丝袜 | 成人在线视频黄色 | 久久精品中文字幕一区二区三区 | 国产三级三级三级三级 | 好骚综合在线 | 欧美性色生活片免费播放 | 免费观看9x视频网站在线观看 | 美女av在线免费观看 | 国产精品久久久久久影视 | 久久精品一区二区三区不卡牛牛 | 高清做爰免费无遮网站挡 | 欧美激情视频一区二区免费 | 国产18视频 | 毛片视频在线免费观看 | 久草在线资源福利站 |