shell往awk傳引數

2021-07-23 19:04:54 字數 668 閱讀 6976

本文**[記錄無限:

www.gluoo.cn

].今天在搞指令碼,需求是這樣的,有乙個檔案格式大概是這樣的:

180 '***analyzer'

20 '***job'

1 '******'

需要按第一列的數值讀取這個檔案,比如第一行大於等於20的顯示出來,剛開始用的指令碼是這樣的:

demo.sh

#!/bin/bash

threadhold=$1

awk '}' ~/tmp/159.122.224.157_temp

這樣調了一下:./demo.sh 5

執行結果:

180 '***analyzer'

20 '***job'

1 '******'

第三行也出來了,不科學呀,第三行第一列可是1呀,1大於等於5???

百思不解呀,後來把變數threadhold

去掉,直接寫成5,正常了,正常了,正常了,我去,這是啥意思,後來一琢磨,原來不能直接在awk裡使用shell的變數,需要使用的話需要通過-v傳給awk:

#!/bin/bash

threadhold=$1

awk -v threadhold=$threadhold '}' ~/tmp/159.122.224.157_temp

結果就正常了

awk如何向shell傳值

今天寫指令碼,遇到awk指令碼向shell傳參的情況,上網谷歌一下,發現都有些麻煩,通過管道,通過eval,感覺都很複雜。於是想到用read來試一下。首先構造乙個測試檔案test.txt,裡面的內容是1 2 3。一開始嘗試 awk test.txt read a b c 可是echo a,發現為空,...

如何給awk傳外部引數

在awk中,傳參的方式主要有如下兩種 expensive user a 3 expensive user b 4 expensive user echo awk v a a v b b 0.75這種方式就是在awk的動作語句後面指定引數的值 expensive user a 3 expensive ...

向shell指令碼傳引數

執行 nano test.sh 建立乙個新的shell指令碼。指令碼test.sh的內容如下 bin sh name 1 echo the are great man 給新建立的test.sh的指令碼賦可執行許可權,命令為 chmod 755 test.sh 執行 test.sh xiao wang...