簡體   English   中英

驗證是否已創建外殼文件

[英]Verify if a file was created shell

我必須編寫一個shell腳本,該腳本將監視命令中給定的某些文件夾,並在其中創建某些文件時給出消息(該文件的名稱將從鍵盤讀取)。

誰能告訴我為什么這不起作用?

#!/bin/sh
f=`read filename`
isIn=0
for dir in $*
do
    if [ ! -d $dir ]
    then
        echo $dir is not a directory.
    fi
    for i in `find $dir -type f`
    do
        if [ $f=$i ]
        then
            echo The file $f already exists.
            isIn=1
            break
        fi
    done
    if [ $isIn -eq 0 ]
    then
        sleep 20
        isIn=0
        for i in `find $dir -type f`
        do
            if [ $f=$i ]
            then
                echo The file was created\!
                isIn=1
                break
            fi
        done
    fi
    if [ $isIn -eq 0 ]
    then
        echo The file was not created\!
    fi
done

我使用的想法是,我從目錄中取出所有文件,並驗證文件是否不存在。 如果是,請顯示消息並移至下一個目錄。 如果沒有,我就“等待”。 如果在我等待創建某個文件的時間里,它會出現在所有文件的列表中,然后我檢查一下。

我的問題是,無論我從鍵盤上讀取了什么文件,我都會收到消息“文件已存在”。 不告訴我文件名。

  1. 用正確的用法read fread -p filename: f代替f=`read filename`
  2. find $dir -type f打印完整的文件名,包括目錄路徑。 由於只需要基本名稱,因此請替換兩行

      for i in `find $dir -type f` 

      for i in `find $dir -type f -printf '%f\\n'` 
  3. [ ]每個運算符和操作數必須是一個單獨的參數。 因此更換兩條線

      if [ $f=$i ] 

      if [ "$f" = $i ] 

暫無
暫無

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

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