2017-09-04 50 views
1

我在通過我的腳本在我的下標中進行迭代時遇到了一些麻煩。問題似乎是我運行它,它只遍歷我的$ @列表的第一個索引。我想它會停下來等待更改,然後繼續下一個文件。我的下標的重點是使用我的「單個文件腳本」同時瀏覽多個文件。如果我更改我的文件,它會繼續到下一個索引,但是如果我放棄它,則不會。我希望我讓自己清楚。 謝謝!使用subshel​​l通過文件參數進行bash循環

腳本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

一般而言外殼腳本將等待每個命令在移動到下一個之前完成。而這正是發生在你SCRIPT2它擊中

sh filkontroll.sh "$i" 

和等待,要在移動之前完成。

如果你想在同一時間通過把&在該行的像

sh filkontroll.sh "$i" & 

末運行多箇中,你應該把該命令在後臺或考慮一個工具來做到並行像GNU相似之處

+0

順便說一句,它運行在後臺永遠?導致我的Mac現在運行非常激烈。我在終端中運行「top」,即使在我退出腳本之後,我看到了四個sh進程? – ruubel

+0

@ruubel它會在後臺運行直到它退出,無論是自然還是被殺死。在您的腳本中,您可以在開始所有腳本後獲得很多腳本,等待3秒鐘,然後再次啓動它們並持續執行。如果腳本中的任何腳本花費超過3秒鐘時間,則會越來越多直到系統無法跟上更多 –

+0

噢,我明白了!不,我將其改爲60秒。我可以在腳本中使用kill開關嗎?或者我應該如何在Im完成時將其取消? – ruubel