2016-11-21 160 views
1

我目前正在編寫腳本的代碼以將文件移動到「垃圾箱」。 就其本身而言 - 代碼工作正常,但我希望它在文件被正確移動時生成一條消息,並且當特定文件未能移動/不存在時生成一條消息。Shellscript - 在使用mv時顯示特定參數的錯誤

我的代碼將接受多個用於輸入的文件名,例如

# del test1.txt *.html testing.doc 
# Successfully moved to Dustbin 

但是,如果其中只有一個不存在,它仍會產生一條錯誤消息。 我如何做到這一點,但仍然允許它接受上面的例子中看到的論點?

我的代碼如下:

#!/bin/sh 

mv -u "[email protected]" /root/Dustbin 2>/dev/null 

# END OF SCRIPT 

對不起,恐怕是一個明顯的問題!我對shellcript完全陌生!

非常感謝

回答

1

你將不得不遍歷參數和嘗試移動各一個:

for path in "[email protected]"; do 
    if mv -u "$path" /root/Dustbin 2>/dev/null; then 
     echo "Success" 
    else 
     printf 'Failed to move %s\n' "$path" 
    fi 
done 

作爲簡寫遍歷參數,你可以省略in "[email protected]"

for path; do 
    if mv -u "$path" /root/Dustbin 2>/dev/null; then 
     echo "Success" 
    else 
     printf 'Failed to move %s\n' "$path" 
    fi 
done 
+0

謝謝! 我知道我必須仔細檢查每個參數,但沒有辦法知道如何去做。我甚至不知道我們可以在bash中使用printf - 這是全新的! :) – William