Bash脚本编程。检查文件状态

时间:2015-09-02 08:33:46

标签: bash shell

我已经完成了如下任务: 我应该编写一个程序来检查文件并打印出是否发生以下情况之一:

  1. 创建文件
  2. 文件已修改
  3. 文件已删除
  4. 我做了一个工作程序(我的无声方式):

    bool=true
    
    if [ -e "$1" ]
    
    then
    
    dato=$(date -r "$1" "+%s")
    
    datony=$(date -r "$1" "+%s")
    while [ "$bool" = true ]
    do
    echo "File exists!"
    sleep $2
    datony=$(date -r "$1" "+%s")
    if [ "$dato" -ne "$datony" ]
    then
    bool=false
    echo "File modified!"
    fi
    if [ ! -e "$1" ]; then
    bool=false
    echo "File erased"
    fi
    done
    fi
    
    if [ ! -e "$1" ]
    then
    while [ "$bool" = true ]
    do
    echo "File does not exist!"
    sleep $2
    if [ -e "$1" ]
    then
    bool=false
    echo "File created!"
    fi
    done
    fi
    

    现在的问题是我应该创建一个新脚本,它应该使用我现有的脚本来获取多个文件并检查它们的状态。我需要帮助我如何使用我的脚本来做到这一点。

1 个答案:

答案 0 :(得分:0)

如果你想继续使用1美元的文件和2美元的睡眠时间。

首先,将睡眠时间放在变量

gulp-plumber

将您已经完成的所有代码放在一个函数(或程序)中

sleepTime=$2

创建另一个函数来分隔文件并在后台调用另一个函数。

checkFile(){
    bool=true

    if [ -e "$1" ]
    then
        dato=$(date -r "$1" "+%s")
        datony=$(date -r "$1" "+%s")
        while [ "$bool" = true ]
        do
            echo "File exists!"
            sleep $2
            datony=$(date -r "$1" "+%s")
            if [ "$dato" -ne "$datony" ]
            then
                bool=false
                echo "File modified!"
            fi
            if [ ! -e "$1" ]; then
                bool=false
                echo "File erased"
            fi
        done
    fi

    if [ ! -e "$1" ]
    then
        while [ "$bool" = true ]
        do
            echo "File does not exist!"
            sleep $2
            if [ -e "$1" ]
            then
                bool=false
                echo "File created!"
            fi
        done
    fi
}

在" main"程序你只需要调用函数来分割传递$ 1的文件

func_splitFiles(){ 
    while [ ! -z $1 ]; 
    do 
        checkFile $1 $sleepTime &
        shift; 
    done; 
}

你应该调用程序在引号之间传递文件。

func_splitFiles $1