【问题标题】:Bash-scripting. Check file-statusBash 脚本。检查文件状态
【发布时间】:2015-09-02 08:33:45
【问题描述】:

我接到了一项任务,内容如下; 我应该编写一个程序来检查文件并在发生以下情况时打印出来:

  1. 文件已创建
  2. 文件已修改
  3. 文件已删除

我已经制定了一个工作程序(我的菜鸟方式):

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

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

【问题讨论】:

  • 这取决于您如何将多个文件作为参数。您可以从文件中读取它,也可以作为多个参数或带有分隔符的单个参数来读取它

标签: bash shell


【解决方案1】:

如果您想继续使用 $1 文件和 $2 睡眠时间。

首先,将睡眠时间放入变量中

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
}

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

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

在“主”程序中,您只需调用函数来拆分传递 $1 的文件

func_splitFiles $1

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

program.sh "file1 file2 file3" 1

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2023-04-03
    • 2016-05-15
    • 1970-01-01
    • 2017-04-01
    • 2020-11-23
    • 1970-01-01
    • 2013-03-02
    • 2013-09-06
    相关资源
    最近更新 更多