簡體   English   中英

從AWK讀取變量

[英]Read variable from AWK

我正在嘗試通過此命令獲取內存信息:

#!/bin/bash
set -x
cat /proc/meminfo | grep "MemFree" | tail -n 1 | awk '{ print $2 $4 }' | read numA numB
echo $numA

我得到了這個

+ awk '{ print $2 $4 }'
+ read numA numB
+ tail -n 1
+ grep MemFree
+ cat /proc/meminfo
+ echo

我嘗試將這些數據讀取到變量是不成功的。 我的問題是我怎么能讀到這些變量? 我想讀一下有多少內存是免費的:90841312 KB

問候

將輸出直接分配給變量:

var=$(cat /proc/meminfo | grep "MemFree" | tail -n 1 | awk '{ print $2 $4 }')
echo $var

使用BASH您可以將復雜命令減少到:

read -r _ numA _ numB < <(grep MemFree /proc/meminfo | tail -n 1)

順便說一句:如果你從awk打印多個vales,你需要一個分隔符:

$ echo "11 22" | awk '{print $1 }'
11
$ echo "11 22" | awk '{print $2}'
22
$ echo "11 22" | awk '{print $1 $2}'
1122
 ^ note no space there...

你要么需要一個逗號:

$ echo "11 22" | awk '{print $1,$2}'
11 22

或物理性:

$ echo "11 22" | awk '{print $1"    "$2}'
11    22

因為沒有分離,命令替換不會讀取您的意圖:

$ read -r f1 f2 <<< $(echo "11 22" | awk '{print $1 $2}')
$ echo $f1
1122
echo $f2

# f1 got two fields and nada for f2
arr=( $(awk '/MemFree/{split($0,a)} END{print a[2], a[4]}' /proc/meminfo) )
echo "${arr[0]}"
echo "${arr[1]}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM