bash - 将数组中的每个项目作为标志参数传递给 bash 中的命令
问题描述
我想知道如何将数组中的每个项目作为参数传递给命令中的标志。
例如,
myCommand -f foo1 -f foo2, ... -f fooN
我想定义一个数组,这样
FOOS=("foo1" "foo2" ... "fooN")
并遍历数组以-f
在示例中用作标志。
就我而言,我想将目录中的每个文件传递给某个命令,每个命令都使用-f
命令。有任何想法吗?
解决方案
最强大的解决方案是手动构建第二个列表:
args=()
for foo in "${FOOS[@]}"; do args+=(-f "$foo"); done
myCommand "${args[@]}"
没有真正简单的方法可以做到这一点。"-f "
您可以在每个项目之前使用字符串替换。它会一直工作,直到其中一个参数有空格或 glob,然后它不会。
myCommand ${FOOS[@]/#/-f }
(注意周围没有引用${FOOS...}
。)
推荐阅读
- php - Jquery Fileuploader 上 mysql 选择查询的附加条件
- algorithm - 如何压缩一定范围内的随机正整数数组?
- database-design - 在多个轴上聚合时间序列数据?
- android - 如何使我的“列表视图”中的每个添加项目,可点击并可以打开一个新活动
- c# - 有效检查 DataTable 中的任何单元格是否包含子字符串
- javascript - 在浅拷贝/克隆上更新 eventListener
- jboss - 配置为 JCache 时如何从 Infinispan 缓存中获取高级缓存或配置事务管理器?
- ionic-framework - 如何在离子输入旁边对齐离子段 - Ionic4
- python - 有没有办法复制一个目录的内容(仅文件)而不遍历该目录中的所有文件?
- sockets - 如何通过 Dart 套接字发送修改后的字节?