最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell編程中Shift的用法小結(jié)

 更新時(shí)間:2021年07月13日 09:05:01   作者:image eye  
本文給大家分享Shell編程中Shift的用法小結(jié),文末文給大家擴(kuò)展介紹Shell grep 命令擴(kuò)展增強(qiáng)問(wèn)題分析,感興趣的朋友跟隨小編一起看看吧

位置參數(shù)可以用shift命令左移。比如shift 3表示原來(lái)的$4現(xiàn)在變成$1,原來(lái)的$5現(xiàn)在變成$2等等,原來(lái)的$1、$2、$3丟棄,$0不移動(dòng)。不帶參數(shù)的shift命令相當(dāng)于shift 1。
非常有用的 Unix 命令:shift。我們知道,對(duì)于位置變量或命令行參數(shù),其個(gè)數(shù)必須是確定的,或者當(dāng) Shell 程序不知道其個(gè)數(shù)時(shí),可以把所有參數(shù)一起賦值給變量$*。若用戶要求 Shell 在不知道位置變量個(gè)數(shù)的情況下,還能逐個(gè)的把參數(shù)一一處理,也就是在 $1 后為 $2,在 $2 后面為 $3 等。在 shift 命令執(zhí)行前變量 $1 的值在 shift 命令執(zhí)行后就不可用了。

示例如下:

#測(cè)試 shift 命令(x_shift.sh)
until [ $# -eq 0 ]
do
echo "第一個(gè)參數(shù)為: $1 參數(shù)個(gè)數(shù)為: $#"
shift
done
執(zhí)行以上程序x_shift.sh:
$./x_shift.sh 1 2 3 4

結(jié)果顯示如下:

第一個(gè)參數(shù)為: 1 參數(shù)個(gè)數(shù)為: 4
第一個(gè)參數(shù)為: 2 參數(shù)個(gè)數(shù)為: 3
第一個(gè)參數(shù)為: 3 參數(shù)個(gè)數(shù)為: 2
第一個(gè)參數(shù)為: 4 參數(shù)個(gè)數(shù)為: 1

從上可知 shift 命令每執(zhí)行一次,變量的個(gè)數(shù)($#)減一,而變量值提前一位,下面代碼用 until 和 shift 命令計(jì)算所有命令行參數(shù)的和。

#shift 上檔命令的應(yīng)用(x_shift2.sh)
if [ $# -eq 0 ]
then
echo "Usage:x_shift2.sh 參數(shù)"
exit 1
fi
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "sum is: $sum"

執(zhí)行上述程序:

$x_shift2.sh 10 20 15

其顯示結(jié)果為:

45

  Shift 命令還有另外一個(gè)重要用途, Bsh 定義了9個(gè)位置變量,從 $1 到 $9,這并不意味著用戶在命令行只能使用9個(gè)參數(shù),借助 shift 命令可以訪問(wèn)多于9個(gè)的參數(shù)。

  Shift 命令一次移動(dòng)參數(shù)的個(gè)數(shù)由其所帶的參數(shù)指定。例如當(dāng) shell 程序處理完前九個(gè)命令行參數(shù)后,可以使用 shift 9 命令把 $10 移到 $1。

擴(kuò)展:Shell grep 命令擴(kuò)展增強(qiáng)

背景: 線上排查問(wèn)題需要找出有某個(gè)特征的日志,并獲取這些日志的完整調(diào)用日志鏈路。 

比如, 通過(guò)某個(gè)tag 獲取到了這些日志的 請(qǐng)求id 【Span ID】,

cat xxxx.log | grep '某tag' | awk  -F '某tag' '{print $2}' 

然后還需要再一步取得所有SpanId的完整日志鏈。顯然目前我們需要使用 xargs 來(lái)批處理執(zhí)行。 但這里有個(gè)問(wèn)題。 grep 無(wú)法支持這種用法。

如下:

[localhost ~]$ cat xxxxxx.log | grep '某tag' | awk  -F '某tag' '{print $2}'  | xargs grep xxxxxx.log

grep: 某SpanId: No such file or directory

grep 第一個(gè)參數(shù)必須是 關(guān)鍵詞正則 ,其后跟隨文件路徑。

所以為了解決這個(gè)問(wèn)題,我們需要使用一個(gè)改造后的SHELL腳本,這里命名為 grepx ,用于增強(qiáng) grep 命令:

#!/bin/bash

FILE_PATH="$1*"

COUNT=0
while  [ $# -gt 0 ]
do
    if [ $COUNT -gt 0 ]
    then
        grep "$1" $FILE_PATH
        #輸出空白行用來(lái)隔斷日志   
       echo -e "\n\n"
    fi

    #shift命令用于對(duì)參數(shù)的移動(dòng)(左移),通常用于在不知道傳入?yún)?shù)個(gè)數(shù)的情況下,依次遍歷每個(gè)參數(shù)
    shift
    let COUNT=COUNT+1
done

原理是對(duì)調(diào)參數(shù)位置, 再通過(guò) shift 命令移動(dòng)參數(shù),批量讀取管道傳遞過(guò)來(lái)的參數(shù),或者 控制臺(tái)傳遞的參數(shù)。

然后 shell 腳本便可以寫成如下:

cat xxxxxx.log | grep '某tag' | awk  -F '某tag' '{print $2}'  | xargs ~/grepx xxxxxx.log

到此這篇關(guān)于Shell編程中Shift的用法小結(jié)的文章就介紹到這了,更多相關(guān)Shell編程中Shift用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shell 命令替換的兩種方式

    Shell 命令替換的兩種方式

    這篇文章主要介紹了Shell 命令替換的兩種方式,需要的朋友可以參考下
    2014-04-04
  • Linux中使用Shell腳本查看Java線程的CPU使用情況

    Linux中使用Shell腳本查看Java線程的CPU使用情況

    這篇文章主要介紹了Linux中使用Shell腳本查看Java線程的CPU使用情況,需要的朋友可以參考下
    2014-06-06
  • 一波實(shí)用的Bash Shell整理

    一波實(shí)用的Bash Shell整理

    這篇文章主要介紹了一波實(shí)用的Bash Shell整理,適用于Ubuntu等Debian系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06
  • Linux中多線程詳解及簡(jiǎn)單實(shí)例

    Linux中多線程詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Linux中多線程詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,這里對(duì)線程概念及優(yōu)缺點(diǎn)做了詳細(xì)介紹并說(shuō)明如何創(chuàng)建和應(yīng)用,需要的朋友可以參考下
    2017-07-07
  • Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控的流程

    Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控的流程

    這篇文章主要介紹了Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控,在 Linux 平臺(tái)下,shell 腳本監(jiān)控是一個(gè)非常簡(jiǎn)單、方便的工具,它可以有效的對(duì)服務(wù)器、進(jìn)程進(jìn)行監(jiān)控,對(duì)系統(tǒng)開發(fā)以及進(jìn)程維護(hù)人員非常有幫助,需要的朋友可以參考下
    2023-02-02
  • 25個(gè)好用的Shell腳本常用命令分享

    25個(gè)好用的Shell腳本常用命令分享

    這篇文章主要介紹了25個(gè)好用的Shell腳本常用命令,由個(gè)人收集整理而來(lái),需要的朋友可以參考下
    2014-03-03
  • 幾例shell實(shí)用腳本(珍藏版)

    幾例shell實(shí)用腳本(珍藏版)

    日常工作中,經(jīng)常編寫一些shell命令或腳本以完成重復(fù)性操作,本文分享了最近用到的幾例shell實(shí)用腳本,感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • Shell腳本判斷IP地址是否合法的方法

    Shell腳本判斷IP地址是否合法的方法

    這篇文章主要介紹了Shell腳本判斷IP地址是否合法的方法,需要的朋友可以參考下
    2014-03-03
  • Linux Shell 截取字符串的方法示例

    Linux Shell 截取字符串的方法示例

    這篇文章主要介紹了Linux Shell 截取字符串的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • linux啟動(dòng)流程詳細(xì)介紹

    linux啟動(dòng)流程詳細(xì)介紹

    這篇文章主要介紹了linux啟動(dòng)流程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

西贡区| 焦作市| 青浦区| 九寨沟县| 岚皋县| 贵阳市| 鄯善县| 台北县| 大余县| 剑阁县| 大邑县| 安达市| 锡林浩特市| 巧家县| 准格尔旗| 胶南市| 清远市| 双柏县| 灵石县| 宁远县| 尤溪县| 顺平县| 望奎县| 青州市| 镇雄县| 普陀区| 兰坪| 镇巴县| 高青县| 英山县| 上林县| 彰化县| 丘北县| 江陵县| 武强县| 阳泉市| 沁源县| 游戏| 赤水市| 揭西县| 广丰县|