请教Bash中`command < <(command)`语法的含义及示例解析
这段Bash+yq代码的运行原理详解
先看用到的YAML文件:
coolActions: - create - edit - delete
这是个简单的YAML结构,coolActions是一个键,对应的值是包含三个字符串元素的数组:create、edit、delete。
下面拆解Bash命令的具体运行逻辑:
1. yq命令的作用
yq '.coolActions[]' sample.yaml
yq是专门处理YAML文件的命令行工具,这里的表达式.coolActions[]用来遍历coolActions对应的数组,把数组里的每个元素单独输出一行。运行这个命令后,控制台会输出三行内容:
create edit delete
2. readarray与进程替换的作用
readarray actions < <(yq '.coolActions[]' sample.yaml)
<(...)是Bash的进程替换语法,它会把括号里命令的输出转换成一个临时的可读文件源,供后续命令读取。readarray是Bash内置命令,作用是把输入的每一行内容依次存入指定的数组变量中。这里就是把yq输出的三行内容分别存入actions数组:actions[0]对应第一行的create(默认会保留每行末尾的换行符,若想去掉可加-t选项,写成readarray -t actions)actions[1]对应editactions[2]对应delete
后续你可以通过${actions[0]}、${actions[1]}这样的方式调用数组里的元素。
内容的提问来源于stack exchange,提问作者Signor Pizza
相关产品推荐
相关产品推荐

