arrays - Bash中具有前置或 append 值的Readarray

标签 arrays linux bash append prepend

在Bash中,如果我想获取所有可用键盘布局的列表,但在自己的键盘布局之前,可以执行以下操作:

readarray -t layouts < <(localectl list-x11-keymap-layouts)
layouts=("custom1" "custom2" "${kb_layouts[@]}")
如果要追加,可以执行以下操作:
readarray -t layouts < <(localectl list-x11-keymap-layouts)
layouts=("${kb_layouts[@]}" "custom1" "custom2")
是否可以在readarray命令中单行实现相同的功能?

最佳答案

由于进程替换输出<(..)被FIFO替换以供进程使用,因此您可以在其中添加更多选择的命令。例如。追加"custom1" "custom2"您只需要做

readarray -t layouts < <(
  localectl list-x11-keymap-layouts; 
  printf '%s\n' "custom1" "custom2" )
这将创建一个FIFO,同时包含localectl输出和printf输出中的内容,以便readarray可以将它们读取为另一条唯一的非空行。对于前置操作,先输出printf,再输出localectl

关于arrays - Bash中具有前置或 append 值的Readarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64782885/

相关文章:

检查输入是否是有效的 shell 命令,Linux

c - linux读取系统调用没有得到EOF

linux - 传递的参数小于 1 时出错,我在做什么?

arrays - 数组Powershell中的匹配条目

c++ - 数组的第一个字符被填充了不正确的数据 C++

java - 有没有办法通过 LAN 以编程方式/命令行从 windows/linux 挂载 android 目录?

按顺序对文件进行 Bash 和排序

php & mysql - 遍历单行的列并将值传递到数组

c++ - 将 vector 转换为数组。如何释放内存?

linux - 如何在 bash 脚本中使用文件描述符 3 中的 "read"进行读取?