File ';做While';循环内部不会生成新的基于时间戳的值
考虑这个do-while循环File ';做While';循环内部不会生成新的基于时间戳的值,file,shell,loops,timestamp,do-while,File,Shell,Loops,Timestamp,Do While,考虑这个do-while循环 find $filepath -iname "$var*" | < commands > while read filename; do logfile=$var/$var1/$filename_"`date +%Y%m%d_%H_%M_%S`".log echo "<a long command > > $logfile" >> commandfile.ksh done find$filepath-iname“$
find $filepath -iname "$var*" | < commands >
while read filename; do
logfile=$var/$var1/$filename_"`date +%Y%m%d_%H_%M_%S`".log
echo "<a long command > > $logfile" >> commandfile.ksh
done
find$filepath-iname“$var*”|
读取文件名时;做
logfile=$var/$var1/$filename\`date+%Y%m%d\%H\%m\%S`。log
echo“>$logfile”>>commandfile.ksh
完成
因此,对于$file的每次迭代,它都应该生成一个新值
这就是我想要的一个新的时间戳,用于输入的每个文件实例
当我看到生成的ksh文件时,$logfile被设置为相同的值
我是不是遗漏了什么。我不想在echo中进行日志文件计算,因为有很多逃逸和混乱。但是,如果每个文件都应该生成一个基于时间戳的值,那么这些值就不应该相同。对吗?
我希望1次迭代至少间隔1s。
但是如果评论中是这样的话,也许这就可以了
find $filepath -iname "$var*" | < commands >
while read filename; do
sleep 1
logfile=$var/$var1/$filename_"`date +%Y%m%d_%H_%M_%S`".log
echo "<a long command > > $logfile" >> commandfile.ksh
done
find$filepath-iname“$var*”|
读取文件名时;做
睡眠1
logfile=$var/$var1/$filename\`date+%Y%m%d\%H\%m\%S`。log
echo“>$logfile”>>commandfile.ksh
完成
到底什么是|
呢?…而且,呃,为什么时间戳不一样呢?毕竟,这个循环运行得相当快,因此如果它在同一秒钟内处理两个结果,它们将具有由date命令生成的相同字符串。此外,使用$PATH
作为find
的参数几乎肯定是错误的,因为PATH
是一个具有非常特定含义的环境变量。(这就是为什么最好对非环境变量使用小写名称的部分原因,我注意到您在其他地方也这样做了)…此外,如果您确实想避免奇数文件名、转义、,等等。我不是指路径环境。我会更正问题的。很抱歉造成混淆。读取,但是当它到达循环时,filename将只输出文件名(没有其他内容),并且文件名中没有空格