亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

bash腳本編程知識儲備

2024-06-28 13:22:59
字體:
來源:轉載
供稿:網友
bash腳本編程知識儲備

bash腳本編程:

????腳本程序:解釋器解釋執行;

  1. 首先得理清一些瑣碎的知識點,我盡量把我所學的幫朋友一起梳理一下
    1. 編程環境:(我會在接下來的篇章,圖文例子三結合的方式帶大家一起學習)

      ???????????? 流程控制語句;

      ???????????????? 順序執行;

      ???????????? 循環執行;

    ???????????????? 選擇執行;

    2. ????????bash變量是弱類型;默認字符型;

    ?

    ????????變量引用:${VAR_NAME}

    ????????引號:

    ????????????弱引用:" " //可以實現變量的替換

    ????????????強引用:' ' //不可完成變量替換

    ????????????命令引用: ` `

    3.

    ????????聲明某變量為整型變量:

    ????????????let VAR_NAME=VALUE

    ????????????declare -i VAR_NAME=VALUE

    如:在腳本想聲明 變量sum為整型,并且給其賦值為0

    ???????????????? declare -i sum=0

    ?

    ????????聲明某變量為環境變量:

    ????????????export VAR_NAME=VALUE

    ????????????declare -x VAR_NAME=VALUE

    如:

    ????????????export -i sum=0

    4. 腳本的編寫格式:

    ????第一行:寫明解釋器; #!/bin/bash

    ????注釋行:所有以#開頭的行均為注釋行;會被解釋器忽略;

    ?

    ????執行腳本:

    ????????賦予執行權限;指明路徑執行;

    ????????直接傳遞腳本給bash解釋器

    ?

    ????????bash的選項:

    ????????????-n: 測試腳本中是否有語法 錯誤;

    ????????????-x: 調試執行;

    5 . 算術運算:

    ????????$[EXPRESSION]

    ????????let VAR_NAME=EXPRESSION

    ????????$((EXPRESSION))

    ????????$(expr argu1 argu2 argu3)

    ????5.1 例 a=1,b=2 求 a+b?

    ?

    ????第一種方法:

    ????????[root@localhost ~]# a=1

    [root@localhost ~]# b=2

    [root@localhost ~]# echo $[a+b]

    3

????????第二種方法:let 命令的用法

????????????????????格式:

????????????????????let 賦值表達式

????????????????【注】let 賦值表達式功能等同于:((賦值表達式))

????????????5.2????范例 1:給自變量 I 加5

????????????????????????[changsheng@localhost ~]$ i=2

[changsheng@localhost ~]$ let i=i+5

[changsheng@localhost ~]$ echo $i

7

==>去掉 let 定義

[changsheng@localhost ~]$ i=i+5

[changsheng@localhost ~]$ echo $i

i+5

提示: let i=i+5 等同于 ((i=1+5)),但后者效率更高

????????????5.3????范例2 :利用let計數監控web服務狀態的小項目(如果看不懂,可以跳過去,這個只是提升題)

????#########################################################################

# File Name: _server_monitor.sh

# Author: changsheng

# mail: 1210982521@QQ.com

# Created Time: Fri 05 Dec 2014 03:48:07 PM CST

#########################################################################

#!/bin/bash

#監控服務狀態

ServerMonitor(){

????#服務狀態監控

????timeout=10

????fails=0

????success=0

????while true

????do

????/usr/bin/wget --timeout=$timeout --tries-1 http://172.16.0.1/ -q -O /dev/null

????????if [ $? -ne 0 ]

????????then

????????????let fails=fails+1

????????????success=0

????????else

????????????fails=0

????????????let success=1

????????fi

????????if [ $success -ge 1 ]

????????then

????????????exit 0

????????fi

????????if [$fails -ge 2 ];then

????????????Critical=" TMS 應用服務出現故障,請緊急處理??! "

????????????echo $Critical | mutt -s " 服務 down " www.magedu.com

????????????exit

????????fi

????done

?

}

?

6. 以空格為分割,打印1-10之間的數字:

????????[root@localhost test-scripts]# seq -s " " 10

1 2 3 4 5 6 7 8 9 10

注解: -s 是指定分隔符

7. shell 的特殊變量

????如下圖所示:

????????

?

?

????????7.1 $* 和$@區別例子:

???????????????? $* 將所有的命令行的所有參數視為單個字符串,等同于"$1$2$3

???????????? $@ 將命令行的每個參數視為單獨的子串,等同于"$1" "$2" " $3".這是將參數傳遞給其它程序的最佳方式,因為他會保留所有內嵌在每個參數的任何空白。

實戰演示:

[root@localhost test-scripts]# set -- "I am" handsome boy #===》傳入三個參數

[root@localhost test-scripts]# echo $# #==è現在有三個參數

3

[root@localhost test-scripts]# for i in $*;do echo $i;done #循環打印這些參數用$*,無引號

I

am

handsome

boy

[root@localhost test-scripts]# for i in $@;do echo $i;done #沒有引號的情況下和$*結果一樣

I

am

handsome

boy

[root@localhost test-scripts]# for i ;do echo $i;done #--無in變量列表,相當于 in "$@"

I am

handsome

boy

[root@localhost test-scripts]# for i in "$@";do echo $i;done #------在有雙引號的情況下,參數里引號內內容當做是一個參數輸出了,這才是符合我們傳入參數的要求set – "I am" handsome boy .

I am

handsome

boy

[root@localhost test-scripts]# for i in "$*";do echo $i;done #--加了雙引號,$*表示一個字符串

I am handsome boy

[root@localhost test-scripts]# shift #---用shift 去掉第一個參數

[root@localhost test-scripts]# echo $#

2

[root@localhost test-scripts]# for i in "$@";do echo $i;done #--再次打印只剩后面的參數

handsome

boy

?

8.變量子串的常用操作

????我來為朋友們舉例說明:

定義changsheng變量,內容為"I am chang sheng "

[root@localhost etc]# changsheng="I am chang sheng"

[root@localhost etc]# echo ${changsheng}

I am chang sheng????

  1. 返回字符串changsheng變量字符串的長度

[root@localhost ~]# echo ${#changsheng}

16

?

2)截取changsheng變量字符串從第二個字符之后開始取,默認取后面字符的全部,第2個字符不包括在內。????????也可以理解為刪除前面的多少字符

[root@localhost ~]# echo ${changsheng:2}

Am  chang sheng

?

?

3)截取changsheng變量字符從第二個字符之后,取兩個字符。

[root@localhost ~]# echo ${changsheng:2:2}

am

提示:類似 cut –c 參數

[root@localhost ~]# echo ${changsheng}|cut -c 1-4

I am

[root@localhost ~]# echo ${changsheng}|cut -c 3-4

am

?

?

4)從變量$changsheng開頭開始刪除最短匹配"I am " 子串

[root@localhost ~]# echo ${changsheng#I am}

Chang sheng

?

?

5)從變量$changsheng開頭開始刪除最長匹配"I am chang子串"

[root@localhost ~]# echo ${changsheng##I am chang}

 Sheng

6)    ????${var%Word*}: 自右而左,刪除第一次word出現處的字符開始直到尾部的所有字符;

????????????${var%%word*}:自右而左,刪除最后一次word出現處的字符開始直到尾部的所有字符;

?

系統腳本里的實例:

[ -z "${COLUMNS:-}" ] && COLUMNS=80

??

[ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="$(/sbin/consoletype)"

?

?

下面依次舉例說明:

(1)${value:-world}

當變量未定義或者為空時,返回world內容,否則返回變量的值

[root@localhost ~]# result=${test:-UNSET}

[root@localhost ~]# echo $result

UNSET

[root@localhost ~]# echo $test

[root@localhost ~]#

結論:當test變量沒有內容時,就返回了后面的UNSET。但是并沒有給 result 賦值

(2)${value:=word}

[root@localhost ~]# unset result

[root@localhost ~]# echo $result

?

?

[root@localhost ~]# unset test

[root@localhost ~]# echo $test

?

[root@localhost ~]# result=${test:=UNSET}

[root@localhost ~]# echo $result

UNSET

[root@localhost ~]# echo $test

UNSET

?

提示:變量不存在時,會給變量賦值后面的內容

?

?

9.變量替換表

13. 常用文件測試操作

?

整數二元比較操作符

?

?

?

?

?

?

多分支結構

?

?

?

?

?

?

?

?

?

函數:

?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品国产亚洲| 4444欧美成人kkkk| 日韩久久午夜影院| 91沈先生在线观看| 亚洲欧美激情视频| 亚洲伊人第一页| 国产91在线播放九色快色| 成人h视频在线| 国产精品夜间视频香蕉| 97在线免费观看| 欧美做爰性生交视频| 欧美在线视频观看| 黑人巨大精品欧美一区二区一视频| 色yeye香蕉凹凸一区二区av| 成人午夜激情免费视频| 国产成人涩涩涩视频在线观看| 国产精品日日做人人爱| 5566日本婷婷色中文字幕97| 亚洲另类欧美自拍| 国产日韩换脸av一区在线观看| 青青青国产精品一区二区| 国产欧美精品在线播放| 国产精品第10页| 日韩欧美亚洲范冰冰与中字| 精品美女国产在线| 日韩精品视频中文在线观看| 97在线观看免费高清| 高清视频欧美一级| 亚洲最大的网站| 亚洲天堂免费视频| 欧美另类老女人| 日韩亚洲精品电影| 大荫蒂欧美视频另类xxxx| 国产亚洲精品成人av久久ww| 国产精品视频导航| 日韩性xxxx爱| 久久成人精品一区二区三区| 国产精品夜间视频香蕉| 国产精品成久久久久三级| 日韩高清电影好看的电视剧电影| 日本成人在线视频网址| 国产一区二区三区精品久久久| 日韩av在线影视| 久久天天躁狠狠躁夜夜av| 久热爱精品视频线路一| 亚洲午夜国产成人av电影男同| 超碰91人人草人人干| 成年人精品视频| 亚洲iv一区二区三区| 92看片淫黄大片欧美看国产片| 最近更新的2019中文字幕| 亚洲欧美综合另类中字| 国产精品成人国产乱一区| 亚洲自拍偷拍色片视频| 国产一区二区色| 亚洲一区二区国产| 久久久久中文字幕| 黄色一区二区在线| 国产精品视频在线观看| 亚洲人成欧美中文字幕| 国产成人一区二区三区小说| 91理论片午午论夜理片久久| 97久久精品在线| 全亚洲最色的网站在线观看| 91日本在线观看| 国产精品扒开腿做爽爽爽视频| 97涩涩爰在线观看亚洲| 久久夜色精品国产亚洲aⅴ| 久久久久一本一区二区青青蜜月| 亚洲香蕉成人av网站在线观看| 91成人国产在线观看| 国产福利视频一区| 国内精久久久久久久久久人| 日韩视频中文字幕| 欧美另类69精品久久久久9999| 欧美老女人在线视频| 国产女精品视频网站免费| 欧美成人免费全部| 精品美女永久免费视频| 在线观看日韩视频| 欧美一区二区三区四区在线| 亚洲男人天天操| 97久久精品人人澡人人爽缅北| 国产精品一区二区久久精品| 日韩精品中文字幕在线播放| 亚洲精品自拍视频| 亚洲免费小视频| 国产精品∨欧美精品v日韩精品| xxxx欧美18另类的高清| 亚洲成avwww人| xvideos亚洲人网站| 国产精品美女www| 深夜精品寂寞黄网站在线观看| 九九久久综合网站| 日韩第一页在线| 日韩中文字幕第一页| 国产一区二区三区在线观看网站| 日韩美女在线看| 国产精品成人免费电影| 成人精品视频久久久久| 日本免费一区二区三区视频观看| 日韩电影免费观看在线| 中文字幕日韩在线观看| 原创国产精品91| 中文字幕av一区中文字幕天堂| 亚洲午夜久久久久久久| 97精品一区二区三区| 日韩视频第一页| 国产精品户外野外| 久久精品久久久久| 亚洲精品美女在线观看| 欧美性在线观看| 国产精品久久久久免费a∨| 亚洲视屏在线播放| 日韩中文字幕国产精品| 国产成人精品优优av| 久久人人爽人人爽爽久久| 欧美xxxx做受欧美| 国产精品免费一区| 欧美中文字幕在线观看| 欧美激情中文网| 成人免费黄色网| 国产精品视频公开费视频| 亚洲欧美日韩国产精品| 亚洲成人999| 91在线观看免费网站| 久久99热这里只有精品国产| 欧美日韩中文在线观看| 在线观看国产成人av片| 亚洲精品日韩久久久| 国产99视频精品免视看7| 久久97精品久久久久久久不卡| 日韩欧美综合在线视频| 一区二区三区四区精品| 日本高清+成人网在线观看| 亚洲福利视频免费观看| 成人免费在线视频网址| 亚洲午夜久久久久久久| 久久国产精品99国产精| 久久伊人91精品综合网站| 色综合久久久久久中文网| 日本欧美在线视频| 91福利视频网| 91中文在线视频| 国产婷婷97碰碰久久人人蜜臀| 久久69精品久久久久久久电影好| 色综合视频一区中文字幕| 欧美一级大片在线免费观看| 国产精品入口免费视频一| 欧美中文字幕在线| 性欧美xxxx视频在线观看| 国产成人精品优优av| 亚洲精品美女久久久| 欧美寡妇偷汉性猛交| 国产日韩欧美电影在线观看| 亚洲精品久久视频| 久久精品国产欧美激情| 国产在线视频2019最新视频| 精品国内自产拍在线观看| 国产精品视频久| 国产一区在线播放| 亚洲精品一区二区三区婷婷月| xxxx性欧美| 欧美成人免费观看|