Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在每次运行脚本时创建名称中数字不断增加的文件?_Bash - Fatal编程技术网

Bash 如何在每次运行脚本时创建名称中数字不断增加的文件?

Bash 如何在每次运行脚本时创建名称中数字不断增加的文件?,bash,Bash,我需要创建一个文件,该文件的名称在每次运行时都会递增 sh SyslogClient.sh > syslogExport.log 下次文件将是syslogExport1.log,syslogExport2.log等 如何执行此操作?您可以将以下行添加到脚本SyslogClient.sh的开头: # if logfile exists if [ -f syslogExport.log ] then # count number of logfiles count=`ls syslogExp

我需要创建一个文件,该文件的名称在每次运行时都会递增

sh SyslogClient.sh > syslogExport.log
下次文件将是
syslogExport1.log
syslogExport2.log


如何执行此操作?

您可以将以下行添加到脚本SyslogClient.sh的开头:

# if logfile exists
if [ -f syslogExport.log ]
then
# count number of logfiles
count=`ls syslogExport*.log | wc -w`
# rename syslogExport.log file
mv syslogExport.log syslogExport${count}.log
fi
这将在syslogExport.log中保留当前日志,并在syslogExport1.log、syslogExport2.log等中保存以前的日志


希望这有帮助

您可以使用以下内容:

sh SyslogClient.sh > syslogExport$(( $(find . \( -name . -o -prune \) -type f -name 'syslogExport*.log' | sort -V | tail -1 | tr -cd 0-9) + 1)).log
  • \(-name.-o-prune\)
    -不要进入子目录(请参阅)
  • -键入f
    -仅查找文件
  • sort-V
    -版本排序是数字排序,但也处理前面的字符
  • tail-1
    -获取最后一行(最大数量)
  • tr-cd 0-9
    -仅保留数字
  • $(…)
    -捕获命令的结果
  • $(…+1))
    -将1添加到最大值

如果您不关心数字是否按顺序排列(即:1、2、3、4,…),而只关心它们是否在增加,则可以使用
date
命令:

SyslogClient.sh > syslogExport$(date +"%y%m%d%H%M%S").log

这将生成syslogExport200306155325.log、syslogExport200306155700.log等文件。

var=0;bash SyslogClient.sh>syslogExport$((var++).log
它确实使用syslogexport0.log创建了文件,但它会继续覆盖现有文件。如果您想这样做,您必须从
SyslogClient.sh
打开并重命名该文件。如果有人从序列中间删除了一个日志文件,这将覆盖现有文件。