用于在每5000个段落上更改wput上载目录的bash脚本

时间:2012-07-31 05:52:15

标签: bash shell

如何在每5000个段落中更改wput的upload目录? 我的代码中有什么问题?

仅用于记录;我需要infnite循环我想24小时365天运行这个脚本! 每5000个通道在目录中高出一个数字,如incoming1-infinite

最好的问候

豪格

#!/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:pass@ip: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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

只需计算除以5000的余数,如果它等于0(或1或任何<5000),就可以做你需要的。

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

答案 2 :(得分:0)

只需在无限循环中放置一个执行5,000次的for循环(可以跟踪目录序列号):

#!/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:pass@ip:port/incoming$n
    )
  done      
done