日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell编程入门(第二版)(下)

發布時間:2025/3/17 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell编程入门(第二版)(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

流程控制語句

三、select/in[較少用]

格式:

[python]?view plaincopy
  • ????select?[變量]?in?[關鍵字]??
  • ????do???
  • ????????command?1???
  • ????????...?...???
  • ????????command?n???
  • ????done???
  • #select把關鍵字中的每一項做成類似表單,以交互的方式執行do和done之間的命令??

  • 示例-select.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?Show?select?usage??
  • ??
  • echo?"What's?your?favorate?OS?"??
  • ??
  • select?var?in?"Linux"?"Windows"?"UNIX"?"Other"??
  • do??
  • ????break??
  • done??
  • ??
  • echo?"You?have?selected?$var"??



  • 四、case/esac

    格式:

    [python]?view plaincopy
  • case?變量?in???
  • 字符串1)???
  • ????命令列表1???
  • ????;;???
  • ????...???
  • 字符串n)???
  • ????命令列表n???
  • ????;;???
  • esac??

  • 示例-case.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?Show?Usage?for?case/esac??
  • ??
  • echo?"*********************************"??
  • echo?"Please?select?a?oprator?as?below:"??
  • echo?"C?...?copy"??
  • echo?"D?...?delete"??
  • echo?"B?...?backup"??
  • echo?"*********************************"??
  • ??
  • read?op??
  • case?$op?in??
  • ????C)????
  • ????????echo?"copy...."??
  • ????????;;????
  • ????D)????
  • ????????echo?"delete...."??
  • ????????;;????
  • ????B)????
  • ????????echo?"backup..."??
  • ????????;;??
  • ????*)??
  • ????????echo?"Unknow?operator!"??
  • ????????exit?1??
  • esac??

  • 示例-select.case

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?test?shell?script?for?select?and?case??
  • ??
  • echo?"a?is?5,?b?is?3,?please?select?your?method"??
  • a=5??
  • b=3;??
  • ??
  • select?var?in?"a+b"?"a-b"?"a*b"?"a/b"??
  • do??
  • ????break??
  • done??
  • ??
  • case?$var?in??
  • ????"a+b")??
  • ????????echo?"a+b="`expr?$a?+?$b?`??
  • ????????;;????
  • ????"a-b")??
  • ????????echo?"a-b="`expr?$a?-?$b`??
  • ????????;;????
  • ????"a*b")??
  • ????????echo?"a*b="`expr?$a?\*?$b`??
  • ????????;;??
  • ????"a/b")??
  • ????????echo?"a/b="`expr?$a?/?$b`??
  • ????????;;??
  • ????*)??
  • ????????echo?"input?error..."??
  • ????????exit?1??
  • esac??

  • 實例-/etc/rc.d/init.d/httpd部分源代碼

    [python]?view plaincopy
  • #?See?how?we?were?called.??
  • case?"$1"?in??
  • ??start)??
  • ????start??
  • ????;;??
  • ??stop)??
  • ????stop??
  • ????;;??
  • ??status)??
  • ????;;??
  • ??restart)??
  • ????stop??
  • ????start??
  • ????;;????
  • ??condrestart|try-restart)??
  • ????if?status?-p?${pidfile}?$httpd?>&/dev/null;?then??
  • ????????stop??
  • ????????start??
  • ????fi??
  • ????;;??
  • ??force-reload|reload)??
  • ????????reload??
  • ????;;??
  • ??graceful|help|configtest|fullstatus)??
  • ????$apachectl?$@??
  • ????RETVAL=$???
  • ????;;??
  • ??*)??
  • ????echo?$"Usage:?$prog?{start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"??
  • ????RETVAL=2??
  • esac??



  • 五、while

    格式:

    [python]?view plaincopy
  • while?條件????#無限:while?true??
  • do???
  • ????命令???
  • done???

  • 示例-while.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?usage?for?while??
  • ??
  • num=1??
  • while?[?$num?-le?10?]??
  • do??
  • ????echo?$(expr?$num?\*?$num)??
  • ????let?num++??
  • done??

  • 示例-useradd.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?shell?script?to?add?user(s)??
  • #echo?123456?|?passwd?--stdin?xiaofang??#用非交互方式設置xiaofang的密碼??
  • ??
  • echo?-n?"Plese?input?the?user?name:?"??
  • read?username??
  • echo?-n?"Plese?input?the?sum?users:?"??
  • read?sum??
  • ??
  • num=1??
  • while?[?$num?-le?$sum?]??
  • do??
  • ????/usr/sbin/useradd?"$username$num"?????
  • ????if?[?$??-ne?0?]???
  • ????then??
  • ????????echo?"user:?$username?already?exists."??
  • ????????exit?1??
  • ????fi????
  • ??????
  • ????let?num++??
  • done??
  • ??
  • echo?-n?"Please?input?the?passwd?for?this?users:?"??
  • read?passwd??
  • ??
  • i=1??
  • while?[?$i?-le?$sum?]??
  • do??
  • ????echo?$passwd?|?/usr/bin/passwd?--stdin?"$username$i"??
  • ????let?i++??
  • done??




  • 示例-userdel.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?shell?script?for?delete?user(s)??
  • ??
  • echo?-n?"Please?input?the?username:?"??
  • read?username??
  • echo?-n?"Please?input?the?user?number:?"??
  • read?num???
  • ??
  • i=1??
  • while?[?$i?-le?$num?]??
  • do??
  • ????/usr/sbin/userdel?-r?$username$i??
  • ????if?[?$??-ne?0?]???
  • ????then??
  • ????????echo?"User:?$username$i?is?not?exists."??
  • ????????let?i++???
  • ????????continue??
  • ????fi????
  • ??
  • ????let?i++???
  • done??

  • 六、until

    格式:

    [python]?view plaincopy
  • ????until?條件???
  • ????do???
  • ????????命令???
  • ????done???
  • #until類似while循環,不同的是until是條件返回值為假時才繼續執行。??

  • 示例-until.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?script?to?show?until?usage.??
  • ??
  • echo?"Please?input?Y/y?to?stop..."??
  • read?input??
  • ??
  • until?[?"$input"?=?"Y"?]?||?[?"$input"?=?"y"?]??
  • do??
  • ????echo?"input?error,?input?again!"??
  • ????read?input??
  • done??

  • 七、跳出循環:breakcontinue?

    break:跳出整個循環?

    continue:跳過本次循環,進行下次循環

    ?

    示例-break_continue.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?test?shell?script?for?break&continue??
  • ??
  • while?true??
  • do??
  • ????echo?"*****************************"??
  • ????echo?"Please?have?a?select?as?blow:"??
  • ????echo?"1?Copy"??
  • ????echo?"2?Delete"??
  • ????echo?"3?Backup"??
  • ????echo?"4?Quit***********************"??
  • ????read?op??
  • ??
  • ????case?$op?in??
  • ????????"1")??
  • ????????????echo?"$op?is?Copy"??
  • ????????????;;????
  • ????????"2")??
  • ????????????echo?"$op?is?Delete"??
  • ????????????;;????
  • ????????"3")??
  • ????????????echo?"$op?is?Backup"??
  • ????????????;;??
  • ????????"4")??
  • ????????????echo?"Exit..."??
  • ????????????break??
  • ????????????;;??
  • ????????"*")??
  • ????????????echo?"Invalide?selectino,?please?select?again..."??
  • ????????????continue??
  • ????????????;;??
  • ????esac??
  • done??

  • ?

    八、shift指令

    參數左移,每執行一次,參數序列順次左移一個位置,$#的值減1,?用于分別處理每個參數,移出去的參數不再可用

    ?

    示例-shift.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?test?shell?script?for?shift??
  • ??
  • if?[?$#?-lt?1?]???
  • then??
  • ????echo?"No?enough?parameters"??
  • ????exit?1??
  • fi??
  • ??
  • num=0??
  • while?[?$#?-gt?0?]???
  • do??
  • ????echo?'$1?is?'$1??
  • ????let?num++??
  • ????shift??
  • done??
  • ??
  • echo?$num??

  • 函數應用

    實例-/etc/rc.d/init.d/httpd中的start源代碼

    ?

    一、函數的定義:?

    [python]?view plaincopy
  • 函數名?()???
  • {???
  • ????命令序列???
  • }???

  • 二、函數的調用:不帶()?

    函數名?參數1?參數2?...?參數n

    實例-調用

    ?

    ?

    三、函數中的變量:?

    變量均為全局變量,沒有局部變量

    ?

    四、函數中的參數:

    調用函數時,可以傳遞參數,在函數中用$1$2...來引用?

    ?

    示例-function.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?A?test?shell?script?for?function??
  • ??
  • #?function??
  • Help(){??
  • ????echo?"Usage:?sh?function?\$1?\$2?\$3"??
  • }??
  • ??
  • Display(){??
  • ????echo?"three?argument:?$1?$2?$3"??
  • }??
  • ??
  • #?main??
  • if?[?$#?-ne?3?]???
  • then??
  • ????Help??
  • else??
  • ????echo?"Think?you?for?your?input"??
  • ????Display?$1?$2?$3??
  • fi??

  • Shell?腳本調試?

    sh?-x?script? 這將執行該腳本并顯示所有變量的值。?

    sh?-n?script? 不執行腳本只是檢查語法的模式,將返回所有語法錯誤。?

    ?

    最佳實踐-命令最好使用絕對路徑

    ?

    一個腳本能夠執行-

    1.對腳本有rx權限,只有r,可以使用sh執行

    2.對腳本所在目錄至少有rx權限

    ?

    拓展實例-setuid.sh

    [python]?view plaincopy
  • #!/bin/bash??
  • #?After?the?system?installed,?please?check?setuid?files?first?for?security??
  • #?mkdir?/backup??
  • #?find?/?-perm?-4000?-o?-perm?-2000?>?/backup/setuid.list??
  • ??
  • /bin/find?/?-perm?-4000?-o?-perm?-2000?>?/tmp/setuid.list?2>?/dev/null??
  • ??
  • for?var?in?`/bin/cat?/tmp/setuid.list`??
  • do??
  • ????/bin/grep?$var?/backup/setuid.list?>?/dev/null?2>?/dev/null??
  • ????if?[?$??-ne?0?]???
  • ????then??
  • ????????echo?"$var?is?not?in?/backup/setuid.list,?It's?danger!"??
  • ????fi????
  • done ?
  • 總結

    以上是生活随笔為你收集整理的Shell编程入门(第二版)(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品嫩草av | 国产美女在线免费观看 | 人人爽人人 | 老司机午夜视频 | 又欲又污又肉又黄短文 | 欧美美女色图 | 欧美大片黄色 | 亚洲咪咪 | 欧洲一级片 | 中文字幕久久av | 久久久午夜精品福利内容 | 日本欧美一级 | 欧美日本一区二区 | 亚洲欧美激情小说另类 | 色综合久久88色综合天天 | 国产精品456| 日韩在线欧美 | 亚洲免费观看高清完整 | 国产成人精品在线视频 | 五月天啪啪 | 亚洲欧洲综合在线 | 免费污片在线观看 | 成人三级黄色片 | 成人免费一级视频 | 毛片网络 | 日本人体一区 | 亚洲最大在线观看 | 久久中文娱乐网 | 久久一区二区三区精品 | 麻豆成人91精品二区三区 | av老司机在线观看 | 午夜免费福利小视频 | 国产精品一区二区在线观看 | 亚洲69| 亚洲乱色 | 久久久久一区二区 | 国产免费一区二区 | 国产国语性生话播放 | 激情婷 | 成年人在线观看视频免费 | 黄大色黄大片女爽一次 | 91在线超碰| 亚洲中文字幕一区二区在线观看 | 欧美一区二区三区成人久久片 | 国产三区在线观看 | 成人在线免费网址 | 天天精品| 国产精品久久久久影院色老大 | 黄色工厂在线观看 | 久久精品免费在线观看 | 亚洲日本一区二区三区 | 国产又粗又长又爽 | 超碰下载页面 | 国产一区影院 | 国产精品爽爽久久 | 蜜桃视频一区 | 永久免费不卡在线观看黄网站 | 美女福利视频在线观看 | 欧美视频不卡 | 污污视频在线播放 | 黄色网页免费在线观看 | 视频在线观看你懂的 | 在线观看污网站 | 成人有色视频 | 成人国产精品免费观看动漫 | 欧美色爽| 色偷偷人人澡人人爽人人模 | 亚洲av无码一区二区二三区软件 | 激情文学8888 | 18无码粉嫩小泬无套在线观看 | 久久久不卡国产精品一区二区 | 日本毛片在线观看 | 黄色永久网站 | 99久久99久久精品国产片果冻 | 精品三级在线观看 | 暖暖日本在线 | 三级影片在线免费观看 | www.桃色| 国产在线观看免费高清 | 男男上床视频 | 视频在线观看电影完整版高清免费 | 69国产精品视频免费观看 | 伊人国产在线 | 91日韩在线视频 | 日韩视频免费在线播放 | 99免费 | 久久久噜噜噜www成人 | 五月天中文字幕av | 香蕉影院在线观看 | 国产三级一区二区三区 | 久草在现 | 亚洲av无码国产综合专区 | 色呦呦在线视频 | 欧美一级性视频 | 欧美色成人 | 亚洲 欧美 视频 | 日韩精品成人免费观看视频 | 欧美1区| 日韩人成|