5.3bash編程初步

bash編程:
    bash自身是一個進程:是一個命令解釋器
    type  查看命令的類型python

    shell腳本:
    第一行,頂格:
        shebang   shell和許多其它解釋性語言的註釋符,所以在這些語言中,解釋器指令自己會
        被解釋器認爲是單純的註釋而跳過。
        #!/bin/bash
        #!/usr/bin/pythonlinux

        其它的以#開頭的行均爲註釋,會被解釋器忽略;shell

    練習:
        建立一個組newgroup,id號8008;
        建立一個用戶,名字爲mageedu, id號爲3306,附加組爲newgroup
        建立目錄/tmp/hellobash
        複製/etc/rc.d/init.d/functions至/tmp/hellobash目錄中編程

    過程式編程語言:
        順序執行
        選擇執行:測試條件,可能會多個測試條件,某條件知足時,則執行對應的分支
        循環執行:將同一段代碼反覆執行屢次;所以,循環必須有退出條件;不然,則陷入死循環;bash

    bash
        -n: 語法測試
             bash -n scripts.sh
        -x: 模擬單步執行編程語言

    變量類別:
        本地變量
        環境變量
            export:導出
        局部變量
        位置變量
            $1, ..., $n, ${10}   到達兩位數時,須要用{}括起來
                練習:寫一個腳本,能接受一個參數做爲用戶名,此腳本可建立此用戶,而且其密碼同用戶名;
                shift [n]
        特殊變量:
            $?  命令狀態返回值
            $#: 傳遞給腳本參數的個數
              
            $* 
            $@:引用傳遞給腳本的全部參數測試

    bash的循環語句:
        for:遍歷有限的元素列表,
        while:
        until:進程

        for語句的格式:
            for VAR_NAME in LIST
            do
                循環體
            doneip

            LIST:列表,中間包括一個或多個元素it

            退出條件:遍歷結束

            練習:建立10個用戶,user301, user310
            [root@linux_basic scripts]#echo {01..10}
            01 02 03 04 05 06 07 08 09 10
                列表:user301, user310
                列表:301, 310

                生成數值列表:
                    {start..end}
                        例如:{1..100}
                    seq
                        命令引用
NAME
       seq - print a sequence of numbers

SYNOPSIS
       seq [OPTION]... LAST
       seq [OPTION]... FIRST LAST
       seq [OPTION]... FIRST INCREMENT LAST

DESCRIPTION
       Print numbers from FIRST to LAST, in steps of INCREMENT.                       
                [root@linux_basic scripts]#seq 01 10
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10

                for userNo in {301..310}
                for userNo in $(seq 301 310); do
                    useradd user${userNo}
                done
[root@linux_basic scripts]#echo 3{01..10}
301 302 303 304 305 306 307 308 309 310
                                                        date +%Y%m%d-%H%M%S
            練習:建立目錄/tmp/dir-當前日期時間;例如/tmp/dir-20140707-155503
                在此目錄中建立10個空文件,分別爲file1-file10;
mkdir /tmp/dir-$(date +%y%m%d-%H%M%S)
for filename in $(seq 1 10): do
    touch file${filename}
done
touch file{1..10}

            練習:寫一個腳本
            一、建立用戶tuser1-tuser9;
            二、建立目錄/tmp/dir-當前日期時間;
            三、在/tmp/dir-當前日期時間 目錄中建立9個空文件file101-file109
            四、將file101的屬主改成tuser1,依次類推,一直將file109的屬主改成tuser9;

touch tuser{1..9} var=$(date +%F-%T) mkdir /tmp/dir-${var} touch /tmp/dir-${var}/file1{01..09} for num in $(seq 1 9);do     chmod user${num} /tmp/dir-${var}/file10${num} done

相關文章
相關標籤/搜索