簡體   English   中英

在while循環中調用Bash函數

[英]Calling a Bash function in a while loop

我制作了此腳本,該腳本進行檢查以確保創建了離岸腳本。 我工作正常&emdash; 我添加了一個使它更整潔的函數。 但是我不認為該功能有效,因為它可以在幾秒鍾內同時打印輸出。

#!/bin/bash
#set -x
check_offshore ()
{
    local RESULTS
    RESULTS=$(ssh -q -T casper@mybox "ls -ltr  /come/and/play/with/us/danny/DropBox| grep foreverr_and_$today.csv")
    rc=$?
}

today=$(/bin/date +%Y%m%d)
time=$(/bin/date +"%T.%3N")
iterate=0
while [ $iterate -le 5 ]
do
     check_offshore
     if [[ $rc != 0 ]] ; then
        echo "$time foreverr_and_$today.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox"
        fi
     sleep 5
     iterate=$((iterate+1 ))
     done

這是它創建的日志&emdash; 日志時間永遠不會改變。 在腳本停止之前,它永遠不變。

17:42:28.380 foreverr_and_20150102.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox
17:42:28.380 foreverr_and_20150102.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox
17:42:28.380 foreverr_and_20150102.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox
17:42:28.380 foreverr_and_20150102.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox
17:42:28.380 foreverr_and_20150102.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox
17:42:28.380 foreverr_and_20150102.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox

怎么了,我該如何解決?

注意,問題與函數本身無關。 問題出在環路及其附近。

由於您沒有在循環內設置time=$(...) ,您如何期望它發生變化?

修改循環,以便在每次迭代時重新評估時間。 如果您在23:59:30之后運行此腳本,則日期可能會更改,因此您可能還需要在每次迭代中設置日期。 您可能還會使用特定於Bash的循環控制機制:

for ((iterate = 0; iterate <= 5; iterate++))
do
    today=$(/bin/date +%Y%m%d)
    time=$(/bin/date +"%T.%3N")
    check_offshore
    if [[ $rc != 0 ]] ; then
       echo "$time foreverr_and_$today.csv is not present in casper@mybox:/come/and/play/with/us/danny/DropBox"
    fi
    sleep 5
done

您可能更喜歡保留原始日期,在這種情況下,您可以在循環外繼續設置today日期。 請注意,如果事情從23:59:56.234轉到00:00:02.197,您的日志記錄將變得有些可疑,因為事情發生在午夜之前。 無論對您而言是否重要,您都必須做出判斷。 我建議不要與日志文件中的日期和時間保持一致; 幾天后更容易診斷出發生了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM