bash - 如何在 BASH 中使用进程替换字符串?
问题描述
我知道我可以做类似的事情
cat <(cat somefile)
但我想建立一串<()
. 所以:
for file in *.file; do
mySubs="${mySubs} <(cat ${file})"
done
cat ${mySubs} #cat <(cat 1.file) <(cat 2.file) ... <(cat something.file)
无需使用eval
.
解决方案
直接使用命名管道。用于mktemp
为每个管道创建临时文件名,以便您可以在完成后删除它们。
fifos=()
for f in file1 file2 file3; do
t=$(mktemp)
mkfifo "$t"
pipes+=("$t")
someCommand "$f" > "$t" &
done
someOtherCommand "${pipes[@]}"
rm "${pipes[@]}"
推荐阅读
- javascript - Mac 中的 Firefox 正在改变滚动事件侦听器怎么样?
- node.js - 获取超过 2000 个文档的分区的 PartitionedList
- python - 为什么深度复制 unittest.TestCase 需要这么长时间
- dialogflow-es - 使用单词“disregard”填充意图参数时取消意图的问题
- ios - 条纹功能 presentPaymentSheet 在 iOS Flutter 中不起作用但在 android 中起作用?有什么问题?
- php - 在现有的 foreach 循环中,在 Laravel 8 中将结果计数并显示为 1 of 2
- python - 通过跳过头部层加载张量流检查点
- python - 如何从 2 个 DataFrame 的 2 列创建 PySpark DataFrame?
- javascript - 如何在 Next.js 中向 404 和 500 页面添加自定义响应标头
- regex - 所有没有前导零的正有理数的正则表达式(不包括十进制形式)