1

5000パッセージごとにwputのuploaddirectoryを変更するにはどうすればよいですか?私のコードの何が問題になっていますか?

記録のためだけに; このスクリプトを24時間365日実行したい無限ループが必要です!5000パッセージごとに、incoming1-infiniteのようにディレクトリの1つ上の番号

よろしくお願いします

ハウグ

#!/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
4

3 に答える 3

0

5000 で割った余りを計算し、それが 0 (または 1 または 5000 未満) の場合は、必要なことを行います。

if [ $((no%5000)) = 0 ]
then
...
fi
于 2012-07-31T19:59:09.423 に答える
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
于 2012-07-31T06:54:39.443 に答える
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
于 2012-07-31T20:11:37.287 に答える