我想從BASH中的錯誤日誌中解析出行,然後將某個部分發送給BASH變量,以便稍後在腳本中使用,並在嘗試傳遞它時遇到問題到一個BASH變量。將AWK輸出傳遞給BASH的問題變量
日誌文件的樣子:
1446851818|1446851808.1795|12|NONE|DID|80
我需要在第三盤的數量(在這種情況下,這個數字是12)行
這裏是命令的一個例子,我「M運行:
tail -n5 /var/log/asterisk/queue_log | grep 'CONNECT' | awk -F '[|]' '{print $3}'
的代碼行試圖實現這一點:
- 抓住日誌文件的最後幾行
- 搜索短語(在這種情況下連接,我使用的是相同的命令來觸發不同的項目)在第三盤的線路
- 將這個數出這麼它可以用在別處
如果我運行上面的完整的命令,它運行成功,像這樣:
tail -n5 /var/log/asterisk/queue_log | grep 'CONNECT' | awk -F '[|]' '{print $3}'
12
現在,如果我嘗試它在同一條直線/命令分配給一個變量,我我無法讓它迴應變異BLE。
我賦值給一個變量時,命令如下:
tail -n5 /var/log/asterisk/queue_log | grep 'CONNECT' | brand=$(awk -F '[|]' '{print $3}')
(這是在同一個腳本echo命令正在運行,所以變量應該是罰款,測試腳本的樣子:
#!/bin/bash
tail -n5 /var/log/asterisk/queue_log | grep 'CONNECT' | brand=$(awk -F '[|]' '{print $3}')
echo "$brand";
我知道這很可能不是最有效/最有說服力的解決方案,所以如果有其他想法/方法可以做到這一點,我也向他們開放(我的BASH技能是基本的,但有所改進)
不是'富| x = $(bar)',而不是'x = $(foo | bar)'。 –
管道的右側在子shell中運行,因此在管道的那一側退出時,所做的更改會丟失:'x = hello;回聲再見|讀x; echo $ x'會輸出'hello',而不是'goodbye'。 –