2017-09-04 5 views
1

私の下付き文字内でスクリプトを繰り返し処理するのに問題があります。問題は、私がそれを実行している、それは私の$ @リストの最初のインデックスを反復するだけのようです。私はそれが停止し、次のファイルに進む前に変更を待っていると思っています。私の下付き文字のポイントは、私の "単一ファイルスクリプト"を使って同時に複数のファイルを調べることです。私のファイルを変更した場合は、次のインデックスに進みますが、そうしないとします。私は自分自身を明確にしたいと思う。 ありがとうございました!サブシェルを使用したファイル引数によるbash-looping

スクリプト1:

#!/bin/bash 

timestamp() { 
    date +"%T" 
} 

FILE=$1 
timeer=$(stat -f "%Sm" $FILE) 
myDate=$(date +%b" "%d" "%H:%M:%S" "%Y) 
    if [ -f $FILE ]; then 
     timestamp 
     echo "Filen{$FILE} ble opprettet" 
    fi 
while : 
do 
    Atimeer=$(stat -f "%Sm" $FILE) 

     if [[ "$Atimeer" != "$timeer" && -f $FILE ]]; then 
      timestamp 
      echo "Filen ble endret!!!" 
      exit 130 
    fi 

    if [ ! -f "$FILE" ]; then 
    echo "Filen {$FILE} ble slettet.." 
    exit 130 
    fi 
done 

スクリプト2:各コマンドは、次のいずれかに移動する前に終了するのを

#!/bin/bash 

if [ $# -lt 1 ]; then 
    echo "Not enough arguments, Call this script with" 
    echo "Write: ${0} <file.name>" 
    exit 1 
fi 

while : 
do 

    for i in "${@}" 
    do 
    echo $i 
    sh filkontroll.sh "$i" 
    done 

sleep 3 

done 

答えて

0

一般的なシェルスクリプトでは、待機します。つまり、

sh filkontroll.sh "$i" 

をヒットし、それが移動する前に終了するのを待って、あなたのスクリプト2で何が起こっているかです。

あなたが同時にで複数を実行したい場合は、

sh filkontroll.sh "$i" & 

のような行の末尾に&を置くことによって、バックグラウンドでコマンドを置くか、GNU Parallelsのような並列化を行うためのツールを検討すべきです

+0

btwバックグラウンドでこれまで実行されていますか?私のマックは今非常に強烈に走っているので。私はターミナルで "トップ"を走らせて、スクリプトをやめた後も4つのshプロセスが見えましたか? – ruubel

+0

@ruubelそれは、自然に出るか、殺されるまで、バックグラウンドで実行されます。あなたのスクリプトでは、それらをすべて開始してから3秒待ってから、すべてをやり直してください。3秒以上かかってしまったら、ますます終わるでしょうシステムがちょうどそれ以上続けることができなくなるまで –

+0

私はそれを得る!いいえ、60秒に変更しました。スクリプトでキルスイッチを使用することはできますか?Im Im doneをキャンセルするにはどうすればよいですか? – ruubel

関連する問題