<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • shell腳本執行linux命令大全(shell腳本執行命令語句)


    1. 概述

    Shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。

    大數據技術基礎篇Linux中Shell編程概述與運用

    Shell還是一個功能相當強大的編程語言,易編寫、易調試、靈活性強。Shell是解釋執行的腳本語言,在Shell中可以調用Linux系統命令。

    2. Shell腳本的執行方式

    1)腳本格式

    (1)腳本以#!/bin/bash開頭

    (2)腳本必須有可執行權限

    2)第一個Shell腳本

    (1)需求:創建一個Shell腳本,輸出helloworld

    (2)實操:

    [atguigu@hadoop101 datas]$ touch helloworld.sh[atguigu@hadoop101 datas]$ vi helloworld.sh在helloworld.sh中輸入如下內容#!/bin/bashecho “helloworld”

    3)腳本的常用執行方式

    第一種:輸入腳本的絕對路徑或相對路徑

    (1)首先要賦予helloworld.sh 腳本的+x權限

    [atguigu@hadoop101 datas]$ chmod 777 helloworld.sh

    (2)執行腳本

    /root/helloWorld.sh

    ./helloWorld.sh

    第二種:bash或sh+腳本(不用賦予腳本+x權限)

    sh /root/helloWorld.sh

    sh helloWorld.sh

    3. Shell中的變量

    1)Linux Shell中的變量分為,系統變量和用戶自定義變量。

    2)系統變量:$HOME、$PWD、$SHELL、$USER等等

    3)顯示當前shell中所有變量:set

    3.1 定義變量

    1)基本語法:

    (1)定義變量:變量=值

    (2)撤銷變量:unset 變量

    (3)聲明靜態變量:readonly變量,注意:不能unset

    2)變量定義規則0

    (1)變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。

    (2)等號兩側不能有空格

    (3)變量名稱一般習慣為大寫

    3)案例實操

    (1)定義變量A

    A=8

    (2)撤銷變量A

    unset A

    (3)聲明靜態的變量B=2,不能unset

    readonly B=2

    (4)可把變量提升為全局環境變量,可供其他shell程序使用

    export 變量名

    3.2 將命令的返回值賦給變量

    1)A=`ls -la` 反引號,運行里面的命令,并把結果返回給變量A

    2)A=$(ls -la) 等價于反引號

    3.3 設置環境變量

    1)基本語法:

    (1)export 變量名=變量值 (功能描述:將shell變量輸出為環境變量)

    (2)source 配置文件 (功能描述:讓修改后的配置信息立即生效)

    (3)echo $變量名 (功能描述:查詢環境變量的值)

    2)案例實操:

    (1)在/etc/profile文件中定義JAVA_HOME環境變量

    export JAVA_HOME=/opt/module/jdk1.8.0_144

    export PATH=$PATH:$JAVA_HOME/bin

    (2)查看環境變量JAVA_HOME的值

    [atguigu@hadoop101 datas]$ echo $JAVA_HOME

    /opt/module/jdk1.8.0_144

    3.4 位置參數變量

    1)基本語法

    $n (功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數,十以上的參數需要用大括號包含,如${10})

    $* (功能描述:這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體)

    $@ (功能描述:這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待)

    $# (功能描述:這個變量代表命令行中所有參數的個數)

    2)案例實操

    (1)輸出輸入的的參數1,參數2,所有參數,參數個數

    #!/bin/bashecho “$0 $1 $2”echo “$*”echo “$@”echo “$#”

    (3)$*與$@的區別

    #!/bin/bashfor i in “$*”#$*中的所有參數看成是一個整體,所以這個for循環只會循環一次doecho “The parameters is: $i”donex=1for y in “$@”#$@中的每個參數都看成是獨立的,所以“$@”中有幾個參數,就會循環幾次doecho “The parameter$x is: $y”x=$(( $x +1 ))done

    a)$*和$@都表示傳遞給函數或腳本的所有參數,不被雙引號“”包含時,都以$1 $2 …$n的形式輸出所有參數

    b)當它們被雙引號“”包含時,“$*”會將所有的參數作為一個整體,以“$1 $2 …$n”的形式輸出所有參數;“$@”會將各個參數分開,以“$1” “$2”…”$n”的形式輸出所有參數

    3.5 預定義變量

    1)基本語法:

    $? (功能描述:最后一次執行的命令的返回狀態。如果這個變量的值為0,證明上一個命令正確執行;如果這個變量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。)

    $$ (功能描述:當前進程的進程號(PID))

    $! (功能描述:后臺運行的最后一個進程的進程號(PID))

    2)案例實操

    #!/bin/bashecho “$$”./helloworld.sh &echo “$!”echo “$?”

    4. 運算符

    1)基本語法:

    (1)“$((運算式))”或“$[運算式]”

    (2)expr m + n

    注意expr運算符間要有空格

    (3)expr m – n

    (4)expr *, /, % 乘,除,取余

    2)案例實操:計算(2+3)X4的值

    (1)采用$[運算式]方式

    [root@hadoop101 datas]# S=$[(2+3)*4]

    [root@hadoop101 datas]# echo $S

    (2)expr分布計算

    S=`expr 2 + 3`

    expr $S * 4

    (3)expr一步完成計算

    expr `expr 2 + 3` * 4

    大數據技術基礎篇Linux中Shell編程概述與運用

    5. 條件判斷

    5.1 判斷語句

    1)基本語法:

    [ condition ](注意condition前后要有空格)

    #非空返回true,可使用$?驗證(0為true,>1為false)

    2)案例實操:

    [atguigu] 返回true

    [] 返回false

    [condition] && echo OK || echo notok 條件滿足,執行后面的語句

    5.2 常用判斷條件

    1)兩個整數之間比較

    = 字符串比較

    -lt 小于

    -le 小于等于

    -eq 等于

    -gt 大于

    -ge 大于等于

    -ne 不等于

    2)按照文件權限進行判斷

    -r 有讀的權限

    -w 有寫的權限

    -x 有執行的權限

    3)按照文件類型進行判斷

    -f 文件存在并且是一個常規的文件

    -e 文件存在

    -d 文件存在并是一個目錄

    4)案例實操

    (1)23是否大于等于22

    [ 23 -ge 22 ]

    (2)student.txt是否具有寫權限

    [ -w student.txt ]

    (3)/root/install.log目錄中的文件是否存在

    [ -e /root/install.log ]

    6. 流程控制

    6.1 if 判斷

    1)基本語法:

    if [ 條件判斷式 ];then

    程序

    fi

    或者

    if [ 條件判斷式 ]

    then

    程序

    fi

    注意事項:(1)[ 條件判斷式 ],中括號和條件判斷式之間必須有空格

    2)案例實操

    #!/bin/bashif [ $1 -eq “123” ]thenecho “123”elif [ $1 -eq “456” ]thenecho “456”fi

    6.2 case 語句

    1)基本語法:

    case $變量名 in

    “值1″)

    如果變量的值等于值1,則執行程序1

    ;;

    “值2″)

    如果變量的值等于值2,則執行程序2

    ;;

    …省略其他分支…

    *)

    如果變量的值都不是以上的值,則執行此程序

    ;;

    esac

    2)案例實操

    !/bin/bashcase $1 in“1”)echo “1”;;“2”)echo “2”;;*)echo “other”;;esac

    6.3 for 循環

    1)基本語法1:

    for 變量 in 值1 值2 值3…

    do

    程序

    done

    2)案例實操:

    (1)打印輸入參數

    #!/bin/bash#打印數字for i in “$*”doecho “The num is $i “donefor j in “$@”doecho “The num is $j”done

    3)基本語法2:

    for (( 初始值;循環控制條件;變量變化 ))

    do

    程序

    done

    4)案例實操

    (1)從1加到100

    #!/bin/bashs=0for((i=0;i<=100;i++))dos=$[$s+$i]doneecho “$s”

    6.4 while 循環

    1)基本語法:

    while [ 條件判斷式 ]

    do

    程序

    done

    2)案例實操

    (1)從1加到100

    #!/bin/bashs=0i=1while [ $i -le 100 ]dos=$[$s+$i]i=$[$i+1]doneecho $s

    7. read讀取控制臺輸入

    1)基本語法:

    read(選項)(參數)

    選項:

    -p:指定讀取值時的提示符;

    -t:指定讀取值時等待的時間(秒)。

    參數

    變量:指定讀取值的變量名

    2)案例實操

    讀取控制臺輸入的名稱

    #!/bin/bashread -t 7 -p “please 7 miao input your name ” NAMEecho $NAME

    8 函數

    8.1 系統函數

    1)basename基本語法

    basename [pathname] [suffix]

    basename [string] [suffix] (功能描述:basename命令會刪掉所有的前綴包括最后一個(‘/’)字符,然后將字符串顯示出來。

    選項:

    suffix為后綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。

    2)案例實操

    [atguigu@hadoop101 opt]$ basename /opt/test.txt

    test.txt

    [atguigu@hadoop101 opt]$ basename /opt/test.txt .txt

    test

    3)dirname基本語法

    dirname 文件絕對路徑 (功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然后返回剩下的路徑(目錄的部分))

    4)案例實操

    [atguigu@hadoop101 opt]$ dirname /opt/test.txt

    /opt

    8.2 自定義函數

    1)基本語法:

    [ function ] funname[()]{Action;[return int;]}funname

    2)經驗技巧:

    (1)必須在調用函數地方之前,先聲明函數,shell腳本是逐行運行。不會像其它語言一樣先編譯。

    (2)函數返回值,只能通過$?系統變量獲得,可以顯示加:return返回,如果不加,將以最后一條命令運行結果,作為返回值。return后跟數值n(0-255)

    3)案例實操

    (1)計算輸入參數的和

    #!/bin/bashfunction sum(){s=0s=$[ $1 + $2 ]echo “$s”}read -p “Please input the number1: ” n1;read -p “Please input the number2: ” n2;sum $n1 $n2;

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费