[英]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
我使用的想法是,我從目錄中取出所有文件,並驗證文件是否不存在。 如果是,請顯示消息並移至下一個目錄。 如果沒有,我就“等待”。 如果在我等待創建某個文件的時間里,它會出現在所有文件的列表中,然后我檢查一下。
我的問題是,無論我從鍵盤上讀取了什么文件,我都會收到消息“文件已存在”。 不告訴我文件名。
read f
或read -p filename: f
代替f=`read filename`
。 find $dir -type f
打印完整的文件名,包括目錄路徑。 由於只需要基本名稱,因此請替換兩行
for i in `find $dir -type f`
同
for i in `find $dir -type f -printf '%f\\n'`
[
]
每個運算符和操作數必須是一個單獨的參數。 因此更換兩條線
if [ $f=$i ]
同
if [ "$f" = $i ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.