Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
File ';做While';循环内部不会生成新的基于时间戳的值_File_Shell_Loops_Timestamp_Do While - Fatal编程技术网

File ';做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“$

考虑这个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“$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将只输出文件名(没有其他内容),并且文件名中没有空格