2012-07-31 56 views
1

如何在每5000次更改wput的uploaddirectory? 我的代码有什么问题?bash脚本每5000次更改wput uploaddirectory

仅供备案;我需要infnite循环我想运行这个脚本24h 365天! 每5000通道一个数字越高,在目录等incoming1无限

问候

豪格

#!/bin/bash 
for ((; ;)) 
do 
    no=1 
    while [ $no -le 5000 ] 
    do 
    perl job.pl false false 1 
    cd comp 

    for fname in *.jpg; 
    do 
     mv -i "$fname" ${RANDOM}${RANDOM}.jpg 
    done 

    for fname in *.jpg; 
    do 
     mv "$fname" $(echo "$fname" | sha1sum | cut -f1 -d' ').jpg 
    done 

    if [ $no = '5000' ] 
    then 
     echo $no 
     echo $n 
     n=$((n+1)) # <-- this one not do what i need :-(

    else 
     wput *.jpg ftp://user:[email protected]:port/incoming$n/ # <-- here is the important part 2, i need it to change one directory higher every 5000 passage for example; incoming1 until infinite  
     rm -rf *.jpg 
     cd .. 
    fi 

    no=`expr $no + 1` 
    done 
done 

回答

0
cd comp 
for ((no=1; ; no++)) 
do 
    n=`expr $no/5000` 

    perl job.pl false false 1 

    for fname in *.jpg; 

    # ... rest of the script 
done 
+0

谢谢你,你的脚本运行良好我记住n ='expr $ no/5000'( - : – D0zer 2012-08-02 01:21:51

0

仅仅通过5000计算除法的余数,并且如果它等于0(或1或任何东西< 5000)做你需要的。

if [ $((no%5000)) = 0 ] 
then 
... 
fi 
0

只要把一个for循环执行5000次,您的无限循环中(可跟踪目录序号为您):

#!/bin/bash 
for ((n=0; ; n++)); do 
    for ((no=1; no < 5000; no++)); do 
    perl job.pl false false 1 
    (# Subshell so we don't have to worry about returning 
     # to the previous directory. 
     cd comp 

     # No need to rename each file twice. 
     for fname in *.jpg; do 
     mv "$fname" $(echo "${RANDOM}${RANDOM}.jpg" | sha1sum | cut -f1 -d' ').jpg 
     done 

     wput *.jpg ftp://user:[email protected]:port/incoming$n 
    ) 
    done  
done 
+0

很好用,非常感谢你,并且感谢你用|运算符对其重命名,我忘记了:-) – D0zer 2012-08-02 01:20:56