繁体   English   中英

bash脚本中将多个文件作为参数

[英]multiple files as argument in bash script

我有一个导出日志文件的脚本,通常我会在一天中得到1-3个单独的文件,具体取决于日志的大小。 导出后,我运行报告生成器以吐出这些日志的html文档。 我的问题是如何调用根据文件数生成报告的命令,我知道我可以使用if语句并执行以下操作:

./generateReport -i file1 -o output.html

./generateReport -i file1 file2 -o output.html

./generateReport -i file1 file2 file3 -o output.html

有没有一种方法可以遍历文件并将其包含为输入?

是否有必要使用标志?

./generateReport file1 file2 file3 > output.html

以下将收集一个inputFiles数组,以及一个带有输出文件名的变量:

inputFiles=( )
outputFile=
while (( $# )); do
  if [[ $1 = -o ]]; then
    outputFile=$2; shift
  elif [[ $1 = -i ]]; then
    inputFiles+=( "$2" ); shift
  else
    inputFiles+=( "$1" )
  fi
  shift
done

...然后,您可以执行以下操作:

# redirect stdout to the output file, if one was given
[[ $outputFile ]] && exec >"$outputFile"

# loop over the input files and process each one
for inputFile in "${inputFiles[@]}"; do
  process "$inputFile"
done

尝试扩展文件名:

./generateReport -i file? -o output.html

或对过去24小时内创建的所有日志文件使用find

./generateReport -i `find . -name "file*" -mtime -1` -o output.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM