"For loop" 在 AIX 中

"For loop" in AIX

当然有人可以指出我做错了什么...... 无法让它正确循环遍历 find 命令的所有结果。 运行 这在 AIX 中。

基本上我希望它能找到 1 天前的所有文件,然后将它们全部放入一个文件中。

#! /bin/sh

p1='/MSS-Storage/data/DataExport/runlog'
p2='/MSS-Storage/apps/scripts'
x=1

find $p1/* -mtime -1 -type f >> $p2/tmp.txt

for period in `cat $p2/tmp.txt`

do
        echo "************************Export $x*************************/
                *************************************************" > $p2/`date +summary.\%Y\%m\%d_\%H\%M.log`
        cat $period > $p2/`date +summary.\%Y\%m\%d_\%H\%M.log`
                x=$x+1

done

我会使用 ksh shebang 行(没有 space)。
MSS-Storage 是否如起始斜线所示位于根级别?
您将查找结果附加到 tmp.txt,此文件每隔 运行 变大。我想你想覆盖文件。您可以跳过 tmp.txt 文件重定向查找结果。
在循环中你应该使用 >> (你不想覆盖你的结果),但我会在循环外重定向。
日期命令应该在循环外(只确定一次日期)
x 加 1 可以用 (( x = x + 1 ))
这将加起来:

#!/bin/ksh

p1='/MSS-Storage/data/DataExport/runlog'
p2='/MSS-Storage/apps/scripts'

x=1

find $p1/* -mtime -1 -type f | while read period; do
   echo "************************Export $x*************************/
      *************************************************" 
   cat $period
   (( x = x + 1 ))
done > $p2/summary.$(date +'%Y%m%d_%H%M').log