MY_CMD ${(f)"$(<MY_FILE.txt)"}
$(<MY_FILE.txt)
相当于 $(cat < MY_FILE.txt)
${(f)MY_VAR}
/ ${(f)MY_VAL}
将 MY_VAL
或 MY_VAR
变量中的字符串值,使用换行符 \n
split 成 N 个字符串值根据一定条件从 DB 中查询到若干 OSS 对象的 key ,然后将 OSS 对象下载到本地
parallel
命令和 rclone
进行下载,如使用 20 个并发下载:
parallel -ij 20 rclone copy MY_STORAGE:MY_BUCKET/{} ./ -- key1 key2 key3
arql -e MY_DB 'puts OrderItem.where(conditions...).pluck(:oss_key)' > oss_keys.txt
,
而 parallel 不支持直接从文件中读取参数${(f)"$(<MY_FILE.txt)"
用法,将文本文件中的每一行转换成一个参数:
parallel -ij 20 rclone copy MY_STORAGE:MY_BUCKET/{} ./ -- ${(f)"$(<oss_keys.txt)"
;
文本行中即便存在空格等 shell 的 meta char 也没关系;但是需要注意进程参数列表的长度是有限制的,所以这个方法不适用于比较大的文本这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.