Shell 编程系列文章(二)判断源码包是否安装

判断源码包是否安装

linux 下软件包安装方式众多,需要根据自己安装方式判断。

本机使用brew方式安装,检测jq是否安装

if [ `brew list | grep jq |wc -l` -ne 0 ];then
echo -e "yes,the packet_list: \n$x"
else
echo "no"
fi

代码解析:

1. grep

1. wc命令

wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…

说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。

参数处理说明
-c统计字节数。
-l统计行数。
-m统计字符数
-w统计字数。

2. jq

jq 是一款命令行下处理 JSON 数据的工具。其可以接受标准输入,命令管道或者文件中的 JSON 数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出到标准输出中。

$ data='{"productId":"2723","click":60,"view":300,"deal":2,"day":"20130919"}'
$ echo $data  |    jq    '.productId,  .day'

"2723"
"20130919"

jq命令格式:jq [options] filter [files]
options:

参数处理说明
–version输出jq的版本信息并退出
–slurp/-s读入整个输入流到一个数组。
–raw-input/-R不作为JSON解析,将每一行的文本作为字符串输出到屏幕。
–null-input/ -n不读取任何输入,过滤器运行使用null作为输入。一般用作从头构建JSON数据。
–compact-output /-c使输出紧凑,而不是把每一个JSON对象输出在一行。
–colour-output / -C打开颜色显示
–monochrome-output / -M关闭颜色显示
–ascii-output /-a指定输出格式为ASCII
-raw-output /-r如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)

** filter:**

参数处理说明
.默认输出
.foo输出指定属性,foo代表属性。
.[foo]输出指定数组元素。foo代表数组下标。
.[]输出指定数组中全部元素
指定多个属性作为过滤条件时,用逗号分隔
管道符号(markdown无法转义)将指定的数组元素中的某个属性作为过滤条件

示例:

$ jq . apinfo.json   
[
  {
    "firmwareVersion": "1.0.6.29",
    "hardVersion": "1.20",
    "Operators": "CTCC",
    "iccid": "DATA DATA",
    "snOf3g": "A000004E123ABD2",
    "modelOf3g": "MC271X",
    "Company_3g": "ZTEMT INCORPORATED",
    "MEID_3g": "A000004E123ABD2",
    "memorySN": "000000",
    "memoryModel": "abcdefg",
    "cpuSN": "000000",
    "cpuModel": "MIPS 74Kc V4.12",
    "mac": "00:1F:64:CE:F3:8E",
    "hostsn": "01010730b12014A00477",
    "hostModel": "CS-VIC-1999-C",
    "stCompany": "Beijing Autelan Technology",
    "boardSN": "01010730b12014A00477",
    "networkCardMac": "00:1F:64:CE:F3:8F",
    "lowFreModel": "AR9344",
    "lowFreSN": "000000",
    "hignFreModel": "AR9582",
    "hignFreSN": "000000",
    "gpsModel": "abcdefg",
    "gpsSN": "000000"
  }
]

jq '.[]' apinfo.json 
{
  "firmwareVersion": "1.0.6.29",
  "hardVersion": "1.20",
  "Operators": "CTCC",
  "iccid": "DATA DATA",
  "snOf3g": "A000004E123ABD2",
  "modelOf3g": "MC271X",
  "Company_3g": "ZTEMT INCORPORATED",
  "MEID_3g": "A000004E123ABD2",
  "memorySN": "000000",
  "memoryModel": "abcdefg",
  "cpuSN": "000000",
  "cpuModel": "MIPS 74Kc V4.12",
  "mac": "00:1F:64:CE:F3:8E",
  "hostsn": "01010730b12014A00477",
  "hostModel": "CS-VIC-1999-C",
  "stCompany": "Beijing Autelan Technology",
  "boardSN": "01010730b12014A00477",
  "networkCardMac": "00:1F:64:CE:F3:8F",
  "lowFreModel": "AR9344",
  "lowFreSN": "000000",
  "hignFreModel": "AR9582",
  "hignFreSN": "000000",
  "gpsModel": "abcdefg",
  "gpsSN": "000000"
}

$ jq -r .[].mac apinfo.json 
00:1F:64:CE:F3:8E

$ jq -r '.[] | .mac' apinfo.json 
00:1F:64:CE:F3:8E

$ jq -r '.[] |.mac, .gpsSN' apinfo.json 
00:1F:64:CE:F3:8E
000000

jq -r '.[].mac, .[].gpsSN' apinfo.json 
00:1F:64:CE:F3:8E
000000
    原文作者:_海角_
    原文地址: https://www.jianshu.com/p/4485daf166c6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞