2010-12-07 19 views
4

我正在創建一個腳本,它將計算一些關於目錄的不同信息。我必須給用戶創建一個文件的選項。許多不同的文件檢查都完成了,但其中一個特別讓我感到悲傷:在bash中創建一個文件,如何在不能創建的情況下利用2>/dev/null?

如果文件名被選中並且不存在,則腳本將嘗試創建它。如果創建失敗,則會通知用戶無法創建它。

所以我有一個變量(文件),這是用戶給他想要創建的文件的名稱。然後我使用:

echo -n "Creating the file: '$file'" 
touch "$file" 
if [ -e "$file" ]; then 
    echo "..........File created" 
    else echo"...........Creation failed" 
fi 

> 2/dev/null是否在觸摸線之後?什麼是正確的語法來抑制錯誤消息,並且只顯示創建文件:(文件).........創建失敗?

非常感謝

回答

3

您需要使用2>,而不是>2重定向標準錯誤。

touch "$file" 2> /dev/null 

但即使有這樣的改變你的腳本有一個錯誤:

假設,因爲該文件存在,但您沒有權限去觸摸它的touch失敗。接下來,使用-e支票檢查文件是否存在,該支票返回true,並打印File created,這是不正確的。

要解決這個問題,你需要爲檢查touch命令的返回值:

if touch "$file" 2> /dev/null ; then 
echo "..........File created" 
else 
echo "..........File failed" 
+0

該死的, >之後我錯過了空間。什麼是笨蛋。感謝新鮮的眼睛 – unit 2010-12-07 03:00:46

+0

我剛試過,觸摸「$ file」(space)2>(space(andnospace))/ dev/null並且屏幕上仍然出現一條錯誤消息 – unit 2010-12-07 03:04:33

0

你真的想:

touch "$file" 2> /dev/null 

(注意:2>而不是>2

相關問題