Bash1

blob.png

blob.png

blob.png做語法測試,沒有消息就是最好的消息

blob.png加權限

blob.png

blob.png

單個語句的錯誤并不妨礙之后的語句,但是邏輯錯誤會導致后續語句執行不了

bash:

    -n:語法測試

    -x:模擬單步執行

變量類別:

    本地變量

    環境變量:

        export:導出,作用于當前進程及其子進程

    局部變量

    位置變量:到達兩位數用${10}

2、

blob.png

blob.png

命令引用:

    1、“使用反引號

    2、使用$()

blob.png

blob.png

3、

blob.png

blob.png

4、寫一個腳本,接受一個參數作為用戶名,此腳本可創建此用戶,并且其密碼同用戶名

blob.png

blob.png

blob.png

blob.png

5、$#記錄參數的個數,$*所有的參數,$@所有的參數(當成一個參數)

blob.png

blob.png

blob.png

blob.png

6、

blob.png

blob.png

blob.png

shift [n]:n默認為1

blob.png

blob.png

bash的循環語句:

    for:遍歷有限的元素列表

    while

    until

for語句格式:

    for var_name in list;do

        循環體

    done

生成數值列表:

    1、{start..end}

    2、seq 開始 [步進] 結束

blob.png

練習:創建10個用戶,user301–user310

for userNo in {301..310}

for userNo in $(seq 301 310);do

    useradd user${userNo}

done

blob.png

blob.png

blob.png

練習:創建目錄/tmp/dir-當前時間,在此目錄中創建10個空文件,分別為file1-file10

blob.png

blob.png

練習:

1、創建用戶tuser1-tuser9

2、創建目錄/tmp/dir-當前時間

3、在/tmp/dir-當前時間目錄中創建9個空文件

4、將file101的屬主改為tuser1,依次類推

blob.png

blob.png

blob.png

bash中的算術運算

declare

    -i:整型變量

    -x:環境變量,類似于export

let varName=算術表達式

varName=$[算術表達式]

varName=$((算術表達式))

varName=`expr $num1 + $num2`

練習:計算100以內所有正整數之和

blob.png

blob.png

練習:分別計算100以內所有奇數和偶數之和

blob.png

blob.png

練習:計算當前系統所有用戶的id之和

blob.png

blob.png

練習:計算/etc/rc.d/rc.sysinit /etc/init.d/functions /etc/issue三個文件中的字符數之和

blob.png

blob.png

練習:新建用戶tmpuser1-tmpuser10,并計算他們的id之和

blob.png

blob.png

位置參數:

blob.png

blob.png

blob.png

blob.png

$#:參數個數

$*,$@:引用所有的位置參數

blob.png

blob.png

交互式腳本:

blob.png

blob.png

給變量以默認值:
varName=${varName:-value}

如果varName不空,則其值不變,否則value則作為其值

blob.png

${varName:-value}

blob.png

超時和默認值:

blob.png

blob.png

練習:通過鍵盤給定一個文件的路徑,來判斷文件內容的類型

blob.png

blob.png

練習:通過鍵盤給定一個目錄路徑,默認為“/”,來判斷目錄下文件內容的類型

blob.png

blob.png

算術運算:

    let varName=value

    declare -i varNmae=value

    declare -x全局變量

bash實現算術運算的方式:(不支持小數運算)

    let varName=expression

    $[expression]

    $((expression))推薦

    expr expression 中間必須加空格

blob.png    

        a=2

        b=4

        let c=$a+$b

        let a++

字串連接:

變量引用后方跟直接字串時,變量名要加{}

blob.png

變量命名:第一個單詞首字母小寫,其他單詞首字母大寫

練習:

1、腳本可以接受一個以上的文件路徑作為參數

2、顯示每個文件所擁有的行數

3、顯示本次共對多少個文件執行了行數統計

4、顯示所有文件的總行數

blob.png

blob.png

練習:

新建10個用戶,并求他們的id之和

blob.png

blob.png

練習:

分別統計/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/inittab以#開頭的行和空白行

blob.png

blob.png

練習:

顯示當前系統上所有默認shell為bash的用戶名、uid及所有此類用戶的uid之和

blob.png

blob.png

邏輯運算:

    與運算:

        真,假:

            真&&真=真

            真&&假=假

            假&&真=假

            假&&假=假

    或運算:

        真,假:

            真||真=真

            真||假=真

            假||真=真

            假||假=假

    非運算:

        真,假:

            !真=假

            !假=真

    亦或運算:操作數相同為假、相反為真

比較運算:>,<,>=,<=,==,!=

條件測試:

[ expr ]:命令

[[ expr ]]:關鍵字

test expr

測試類型:根據比較時的操作數的類型

    整數測試:整數比較

    字符串測試

    文件測試:判斷文件的存在及屬性等

    注意:比較運算通常只在同一種類型之間進行

    整型測試:

        -gt:大于

        -lt:小于

        -ge:大于等于

        -le:小于等于

        -eq:等于

        -nq:不等

    字符測試:

        >:大于

        <:小于

        <=:小于等于

        >=:大于等于

        !=:不等

        -n:是否不空,不空為真,空為假

        -z:是否為空,空為真,不空為假

選擇:

    if和case

if:三種格式

    1、if 測試條件;then

        選擇分支

      fi

    if ! id $username &> /dev/null;then

        useradd $username

    fi

    練習:寫一個腳本,接受一個參數,這個參數是用戶名,如果用戶存在,則顯示其id號

blob.png

blob.png

改進版:

blob.png

blob.png

    2、if 測試條件;then

        分支1

     else:

        分支2

    fi

blob.png

blob.png

練習:通過命令行傳遞2個整數參數給腳本,腳本返回其最大值

blob.png

blob.png

練習:通過命令行傳遞任意個整數給腳本,腳本可以返回其最大值

blob.png

blob.png

練習:通過命令行給定一個文件路徑,判斷如果此文件中存在空白行,則顯示其空白行的總數,否則顯示無空白行

如果把命令執行成功與否當做條件,則if語句后必須只跟命令本身,而不能引用

blob.png

blob.png

    3、if 條件1;then

        分支1

     elif 條件2;then

         分支2

     elif 條件3;then

        分支3

     else

        分支n

     fi

練習:傳遞一個參數給腳本,如果參數為quit則顯示你要退出了,如果參數為yes,則顯示說你要繼續,如果為其他任意參數,則說無法識別。

blob.png

blob.png

練習:傳遞一個用戶名給腳本:如果其id為0,則為管理員,如果id大于500則為普通用戶,其他為系統用戶

blob.png

blob.png

重定向:改變其標準位置

標準輸入:0

    鍵盤

標準輸出:1

    顯示器

錯誤輸出:2

    顯示器

輸出重定向:

    command > position覆蓋重定向

blob.png

    command >> position追加重定向

錯誤重定向:

    command 2> position覆蓋輸出

    command 2>> position追加輸出

blob.png

正常的信息正常輸出:

blob.png

合并重定向:

    command &> position指向同一位置,position中要么保存正常信息,要么是錯誤信息

    command > position 2> &1錯誤的也輸出到1的位置

blob.png

分別重定向:

command > position1 2>position2正確的輸出到position1中,錯誤的輸出到position2中

blob.png

會把原文件清掉

輸入重定向:

    command < position

<<:here document此處生成文檔,EOF:end of file

blob.png

blob.png直接輸出到屏幕

 

原創文章,作者:黑白子,如若轉載,請注明出處:http://www.www58058.com/46814

(0)
黑白子黑白子
上一篇 2016-09-17
下一篇 2016-09-17

相關推薦

  • dd命令詳解

    dd命令: convert and copy a file用法:  dd if=/PATH/FROM/SRC of=/PATH/TO/DEST   bs=#: block size, 復制單元大小   count=#:復制多少個bs   of=fil…

    Linux干貨 2017-03-19
  • 馬哥教育網絡班21期+第五周課程練習

    第五周作業 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; cat /boot/grub/grub.conf  | grep "^[[:space:]]\+" 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至…

    Linux干貨 2016-10-17
  • N25第六周作業

    vim 是vi編輯的升級版,同樣有三種工作模式:編輯、命令和一般 模式 #:指定行號位置 #,#:指定多少行到多少行 #,+#:指定范圍,多少行開始,加#行 $:最后一行 .:當前行 .,$-1,當前行到倒數第二行 1,$:全文 %:全文 /從上往下,?:從下往上 搜索 /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行 s/要查找的內容…

    Linux干貨 2017-01-11
  • 第一天參與馬哥linux運維面授

    很高興認識大家,介紹一下,我叫袁亞瓊,來自美麗的云南。我是一個隨和而又不隨性95年女子,喜歡運動,擅長田徑。學食品檢測的,上學期間沒怎么接觸計算機,現在又來學專業計算機,內心還是有幾絲恐慌,希望在今后的學習路上得到各位學友和老師的指導和幫助。等工作穩定,可以去云南放松一下,云南是個吃喝玩樂的好地方,同時也是個感受慢節奏生活的佳地。云南歡迎您哦! 選擇學習li…

    Linux干貨 2018-03-26
  • Linux文件查找命令find和壓縮解壓縮

    概述     Linux系統上一切皆文件,那么隨著時間的推移和管理的服務器增加,在眾多的文件中,如何找到我們需要的文件,這就需要用到文件查找命令了。本章就分享下關于文件查找命令的一些內容和壓縮解壓縮的相關內容。     具體分為一下幾個部分:    …

    Linux干貨 2016-08-16
  • N22-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 # who|cut -d' ' -f1|sort|uniq # root 2、取出最后登錄到當前系統的用戶的相關信息。 # last|head -n 1 # …

    Linux干貨 2016-08-29
欧美性久久久久