国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯(cuò)
        加入自媒體

        Linux入門(mén):一文幫你搞定shell編程!

        六、腳本與用戶交互 操作命令行參數(shù)

        1.  讀取參數(shù)

        bash shell用位置參數(shù)變量(positional parameter)存儲(chǔ)命令行輸入的所有參數(shù),包括程序名。其中,表示程序名,1表示第1個(gè)參數(shù),表示第個(gè)參數(shù),,9表示第9個(gè)參數(shù)。如果參數(shù)個(gè)數(shù)多于9個(gè),必須如下表示變量:,{11},...

        #!/bin/bash
        # author:一口Linux
        for((count = 1; count <= $1; count++))
        do
           echo The number is $count.
        done

        執(zhí)行結(jié)果:

        修改腳本如下:

        echo $1, $2, $3, $4

        執(zhí)行結(jié)果如下:

        2 讀取程序名

        首先想到的是利用,但是0獲取的文件名包括./以及路徑等前綴信息,如下:

        echo The command entered is: $0
        # 運(yùn)行:./
        # 輸出:The command entered is: ./14.sh

        如果想僅得到文件名,而不包含./,可以使用basename命令:

        name=`basename $0`
        echo The command entered is: $name
        # 運(yùn)行:./
        # 輸出:The command entered is: 14.sh
        3 特殊變量$#表示命令行參數(shù)的個(gè)數(shù):
        #!/bin/bash
        # author:一口Linux
        params=$#
        echo The number of params is: $params
        for((i = 1; i <= params; i++))
        do
           echo The param is: $i
        done

        執(zhí)行結(jié)果

        如果想獲取所有的參數(shù),當(dāng)然可以利用#和循環(huán)逐個(gè)遍歷。也可以利用如下兩個(gè)特殊變量:*將所有的命令行參數(shù)看作一個(gè)整體存儲(chǔ),而$@將命令行中以空格間隔的參數(shù)單獨(dú)存儲(chǔ),如下:

        #!/bin/bash
        # author:一口Linux
        count=1
        for param in "$*"
        do
           echo "$* parameter $count = $param"
           count=$[ $count + 1 ]
        done
        count=1
        for param in "$@"
        do
           echo "$@ parameter $count = $param"
           count=$[ $count + 1 ]
        done

        4 基本的讀取

        read命令接受從鍵盤(pán)或文件描述符中的輸入數(shù)據(jù),將其存儲(chǔ)到一個(gè)指定變量中。

        選項(xiàng):

        -p:指定讀取值時(shí)的提示符;
        -t:指定讀取值時(shí)等待的時(shí)間(秒),如果沒(méi)有在指定的時(shí)間內(nèi)輸入,就不再等待了。。
        -n:設(shè)置允許輸入字符的個(gè)數(shù)

        參數(shù)

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

        操作詳解

        例1#!/bin/bash
        # author:一口Linux
        # testing the read option
        read -p "Please enter your name: " name
        echo "Hello $name."

        執(zhí)行結(jié)果

        例2read命令中,可以根據(jù)需要將輸入的數(shù)據(jù)保存在多個(gè)變量中,如果指定的變量比較少,那么最后一個(gè)變量將包含余下的所有輸入,如下所示:#!/bin/bash
        # author:一口Linux
        # testing the read option
        read -p "Enter the values: " val1 val2 val3
        echo "$val1"
        echo "$val2"
        echo "$val3"

        執(zhí)行結(jié)果:

        綜合例子提示用戶輸入一個(gè)正整數(shù)num,然后計(jì)算1+2+3+...+num的值;必須對(duì)num是否為正整數(shù)做判斷,不符合應(yīng)當(dāng)運(yùn)行再次輸入

        思路:

        expr只能對(duì)整數(shù)進(jìn)行計(jì)算,直接用expr 和一個(gè)整數(shù)計(jì)算獲取 $? 的值來(lái)判斷是否為整數(shù)在使用 expr $num1 > 0 判斷是否大于0#!/bin/bash
        # author:一口Linux
        while true
        do
               read -p "please input a positive number: " num
               # 判斷數(shù)是否是整數(shù)
               expr $num + 1 &> /dev/null
               if [ $? -eq 0 ];then
                       # 判斷這個(gè)整數(shù)是否大于0,大于0返回1
                       if [ `expr $num > 0` -eq 1 ];then
                               #echo "yes,positive number"
                               # $sum沒(méi)有賦值,默認(rèn)為0
                               for i in `seq 0 $num`
                               do
                                       sum=`expr $sum + $i`
                               done
                               echo "1+2+3+...+$num = $sum"
                               # 執(zhí)行計(jì)算需要退出
                               exit
                       fi
               fi
               echo "error,input enlegal"
               continue
        done

        測(cè)試:

        七、關(guān)系運(yùn)算符

        有時(shí)候我們需要比較兩個(gè)數(shù)字的大小關(guān)系,這時(shí)候就要用到關(guān)系運(yùn)算符。關(guān)系運(yùn)算符只支持?jǐn)?shù)值運(yùn)算,不支持字符運(yùn)算。

        1. 知識(shí)點(diǎn)詳解

        Shell 語(yǔ)言支持下面這些關(guān)系運(yùn)算符:

        -eq:檢測(cè)兩個(gè)數(shù)是否相等,相等返回 true。
        -ne:檢測(cè)兩個(gè)數(shù)是否不相等,相等返回 true。
        -gt:檢測(cè)左邊的數(shù)是否大于右邊的,如果是返回 true。
        -lt:檢測(cè)左邊的數(shù)是否小于右邊的,如果是返回 true。
        -ge:檢測(cè)左邊的數(shù)是否大于等于右邊的,如果是返回 true。
        -le:檢測(cè)左邊的數(shù)是否小于等于右邊的,如果是返回 true。
        2. 操作詳解#!/bin/bash
        # author:一口Linux
        a=10
        b=20
        if [ $a -gt $b ]
        then
          echo "a great than b"
        else
          echo "a not great than b"
        fi

        執(zhí)行結(jié)果!如下:

        八、字符串運(yùn)算符

         1. 知識(shí)點(diǎn)詳解= 比較兩個(gè)字符串是否相等
        != 比較兩個(gè)字符串是否不相等
        -z 檢測(cè)字符串的長(zhǎng)度是否為零
        -n  檢測(cè)字符串的長(zhǎng)度是否不為零
        $字符名 變量是否有負(fù)值(為空),有返回True,沒(méi)有返回False
        2. 操作詳解#!/bin/bash
        # author:一口Linux
        ###本腳本主要用于字符串運(yùn)算符
        if [ ! $1 ]
        then
           echo "第一個(gè)參數(shù)為空"
           echo "****************************************************************"
           echo "****************************************************************"
           echo "**************執(zhí)行用例的格式為:sh $0 變量1 變量2***************"
           echo "****************************************************************"
           echo "****************************************************************"
           break
        else
           if [ ! $2 ]
           then
               echo "第二個(gè)參數(shù)為空"
               echo "****************************************************************"
               echo "****************************************************************"
               echo "**************執(zhí)行用例的格式為:sh $0 變量1 變量2***************"
               echo "****************************************************************"
               echo "****************************************************************"
               break
           else
               ###1、檢測(cè)兩個(gè)字符串是否相等;
               if [ $1 = $2 ]
               then
                   echo "這是第一個(gè)判斷語(yǔ)句"
                   echo "變量1等于變量2"
               else
                   echo "這是第一個(gè)判斷語(yǔ)句"
                   echo "變量1不等于變量2"
               fi
               ###2、檢測(cè)兩個(gè)字符串是否不相等;
               if [ $1 != $2 ]
               then
                   echo "這是第二個(gè)判斷語(yǔ)句"
                   echo "變量1不等于變量2"
               else
                   echo "這是第二個(gè)判斷語(yǔ)句"
                   echo "便量1等于變量2"
               fi
               ###3、檢測(cè)字符串長(zhǎng)度是否為0
               if [ -z $1 ]
               then
                   echo "這是第三個(gè)判斷段語(yǔ)句"
                   echo "變量1字符串長(zhǎng)度為0"
               else
                   echo "這是第三個(gè)判斷段語(yǔ)句"
                   echo $1
               fi
               ###4、檢測(cè)字符串長(zhǎng)度是否不為0
               if [ -n $2 ]
               then
                   echo "這是第四個(gè)判斷語(yǔ)句"
                   echo "變量2字符串長(zhǎng)度不為0"
                   echo $2
               else
                   echo "這是第四個(gè)判斷語(yǔ)句"
                   echo "變量2字符串長(zhǎng)度為0"
               fi
               ###5、檢測(cè)字符串是否不為空
               if [ $1 ]
               then
                   echo "這是第五個(gè)判斷語(yǔ)句"
                   echo "變量1不為空"
               else
                   echo "這是第五個(gè)判斷語(yǔ)句"
                   echo "變量1為空"
               fi
           fi
        fi

        測(cè)試結(jié)果:

        九、shell文件及目錄常用操作的幾個(gè)實(shí)例 

        提取路徑的目錄和文件名提取目錄:dirname $path

        提取文件名:

        basename $path
        批量重命名帶有空格文件function processFilePathWithSpace(){
        find $1 -name "* *" | while read line
        do
        newFile=`echo $line | sed 's/[ ][ ]_/g'`
        mv "$line" $newFile
        logInfo "mv $line $newFile $?"
        done

        遍歷文件內(nèi)容cat /tmp/text.txt | while read line
        do
        echo $line
        done
        文件不存在,則創(chuàng)建文件[ -f $logFile ] || touch $logFile
        遞歸遍歷目錄function getFile(){
        for file in `l(xiāng)s $1`
        do
         element=$1"/"$file
            if [ -d $element ]
         then
                getFile $element
            else
                echo $element
            fi  
        done

        清空文件內(nèi)容cat /dev/null > $filePath


        <上一頁(yè)  1  2  3  
        聲明: 本文由入駐維科號(hào)的作者撰寫(xiě),觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

        發(fā)表評(píng)論

        0條評(píng)論,0人參與

        請(qǐng)輸入評(píng)論內(nèi)容...

        請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

        您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

        • 看不清,點(diǎn)擊換一張  刷新

        暫無(wú)評(píng)論

        暫無(wú)評(píng)論

          人工智能 獵頭職位 更多
          掃碼關(guān)注公眾號(hào)
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯(cuò)
          x
          *文字標(biāo)題:
          *糾錯(cuò)內(nèi)容:
          聯(lián)系郵箱:
          *驗(yàn) 證 碼:

          粵公網(wǎng)安備 44030502002758號(hào)

          主站蜘蛛池模板: 影音先锋人妻资源| 久久福利导航| 超碰成人免费| 999国产精品视频免费| 夜夜国自一区| 昭平县| 金塔县| 庆阳市| 撸狠狠| 波多野结衣AV不卡无码| 克山县| 安阳市| 五月丁香影院| 欧美成人综合| 亚洲无码电影在线观看| 玉环县| 清水河县| 日本丰满老熟妇乱子伦| 91色在线观看| 桐梓县| 7777久久亚洲中文字幕| 日日噜噜夜夜久久亚洲一区二区| 91精品国产综合久久久蜜臀酒店| 2019最新中文字幕无码播放我不卡| 亚色网站| 亚洲熟女精品中文字幕m| 青青草99| 亚洲插插| 欧美607080| 河北省| 中文字幕av久久爽一区| 东北露脸91| 国产偷伦| 无码中文人妻| 亚洲无码激情| 欧亚AV| 团风县| 五月婷婷影院| 国产9区| 久久国产影院| 久久AV秘?一区二区三区水生|