在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/