bash - 如何存储 awk 命令的输出,该命令是使用 shell 脚本程序从管道中获取输入到数组中的
问题描述
我正在尝试从管道获取输入并使用 awk 命令将输入的指定列存储到数组中。我在 UNIX sh 环境中工作
CMD=$1 #command which i am passing as an input.
C=$2 #column number which i want to store in array
array=
/usr/sbin/clido $CMD 2> /dev/null | awk "{array[NR]=\$$C}"
并尝试了以下命令
/bin/clido $CMD 2> /dev/null | array=( $( awk -v i="$C" '{print $3}' ) )
输出没有存储在数组中......它打印一个空数组。
解决方案
第一个解决方案没有意义,因为您正在设置awk
变量 named array
,而不是该名称的 bash 变量。
第二种解决方案的问题是,您将bash
变量设置array
在管道内。将其与此程序进行比较:
echo abc | x=( $(cat) )
在这里,x 也是空的。管道的接收端是一个子进程,x 将在这个子进程中设置。
为了实现您的目标,请使用
array=( $(/bin/clido $CMD 2> /dev/null | awk -v i="$C" '{print $3}') )
推荐阅读
- ruby - 如何使用 Ruby 将值填充到现有 PDF 中存在的输入元素?
- java - Java - 何时使用 JSR223 脚本执行基于 Java 的语言
- sql - 如何做结果和当前值的对角线减法
- wso2 - WSO2 身份服务器密钥管理器中的辅助 JDBC 用户存储的登录/角色/权限问题
- python - python重命名多个文件
- javascript - 如何专注于输入的第一个字段
- sqlite - 表 raw_contacts 没有名为 raw_contact_id 的列
- sql - SQL 选择到 SSIS 派生列
- python - 如何在colab中将谷歌驱动器安装到R笔记本?
- node.js - 如何使用 TypeORM 创建关系数据?