bash - 如何过滤 bash 数组

标签 bash

假设我有一个 bash 数组

X=("a" "b c" "-d" "k j", "-f")

我想通过是否以 "-" 开头来过滤并得到 ("a""b c""k j")("-d""-f") 分别。

我怎样才能做到这一点?

最佳答案

我想你必须遍历数组:

$ X=("a" "b c" "-d" "k j", "-f")
$ for elem in "${X[@]}"; do [[ $elem == -* ]] && with+=("$elem") || without+=("$elem"); done
$ printf "%s\n" "${with[@]}"
-d
-f
$ printf "%s\n" "${without[@]}"
a
b c
k j,

关于bash - 如何过滤 bash 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586045/

相关文章:

java - 连续运行shell脚本时JVM进入休眠状态

linux - 目录中的总行数

bash - 快速复制一个文件数千次

linux - 如何更改许多文件的符号链接(symbolic link)路径?

bash - 使用 ffmpeg 的 bash 查找循环中的尴尬行为

linux - 无法在 Unix 中捕获 SIGQUIT 信号

linux - 如何在 Linux shell 脚本中提示是/否/取消输入?

linux - 我如何使用 sed 执行此替换?

linux - tar 查询 :How to speedup tar for many files in . tgz 文件

bash - 跟踪在 shell 脚本(例如 zsh)中执行的 shell 命令