本文**[記錄無限:
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...