我有一个要求,我需要将多个参数传递给脚本以触发每个参数的并行处理。现在我需要在单独的日志文件中捕获每个进程输出。
for arg in test_{01..05} ; do bash test.sh "$arg" & done
以上代码只能对输入参数进行并行处理。我试过 exec > >(tee "/path/of/log/$arg_file
日期 +%Y%m%d%H .log") 2>&1
它能够创建带有空输出的日期的单个日志文件名。有人可以建议这里出了什么问题,或者除了使用 parallel package
之外是否还有其他最佳方法?
最佳答案
尝试:
data_part=$(date +%Y%m%d%H)
for arg in test_{01..05} ; do bash test.sh "$arg" > "/path/to/log/${arg}_${data_part}.log" & done
If i use "$arg_date +%Y%m%d%H.log" it is creating a file with just date without arg
是的,因为
$arg_
被解析为变量名arg_=blabla
echo "$arg_" # will print blabla
echo "${arg_}" # equal to the above
分开_
来自 arg
使用大括号 "${arg}_"
将扩展变量 arg
并添加字符串 _
.
关于linux - 将并行进程 bash 脚本输出重定向到单个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63133314/