2017-03-16 75 views
0

晚上好恢復使用bash刪除的文件在UNIX

我有一個任務來完成,並曾嘗試以下但不工作

#!/bin/bash 

FPath=$(grep $1 $HOME/.restore.info | cut -d":" -f2) 
FName=$(grep $1 $HOME/.restore.info | cut -d":" -f1) 
if [ $# -eq 0 ] 
then 
     echo "No input detected" 
     exit $? 

elif [ "$FName" = $1 ] 
then 
     echo " Match found and restored to its original location" 
     mv ~/deleted/$1 $FPath 
else 
     echo "File does not exist" 
     exit $? 
fi 

它應該在一個特定的文件夾恢復刪除的文件它的原始位置

但是,它一直說文件不存在,即使該文件存在。

我還需要爲現有文件創建一個案例,如果用戶選擇重寫現有文件。請幫我這個太

我感謝您的幫助

+1

多個條目,如果有任何文件名包含空格由於缺少引號,腳本將失敗。寫''$ 1「'而不是'$ 1',''$(...)」'而不是'$(...)'等等(但*不要*引用'〜',保持不加引用:) – Socowi

+0

感謝您的回覆,我已經完成了您已經注意到但仍顯示相同的錯誤信息 – user2970289

+0

似乎''$ FName「= $ 1'不是真的。所以試着迴應一下,確保它們是平等的。 – Arash

回答

0

$FPath$FName將進入無限等待,如果$#真的是0,這意味着它會永遠到不了線的其餘部分。

如果你有這樣的照顧: 忽略你的grep情況: grep -i $1 $HOME/.restore.info | cut -d":" -f2

捕獲第一次出現在你的grep如果有$ 1 grep -i $1 $HOME/.restore.info | cut -d":" -f2 | head -1

+0

它與上述修改後的命令一起使用,僅用於恢復兩個文件。現在它再次顯示文件不存在。你認爲這個問題是什麼?路徑和名稱都很好。如果沒有檢測到輸入,它總是表示沒有檢測到輸入,因此不會進入無限等待 – user2970289

+0

該腳本是如何被調用的?你能告訴我你是如何運行得到「文件不存在? – Unwastable