2013-05-03 121 views
0

我對此很新。我只是試圖測試給定文件的存在,如果它不存在,請觸摸它。命令行迴應說我的參數太少。很明顯,我在這裏錯過了一些東西。謝謝你看看。Bourne Shell腳本中的「參數太少」

#!/bin/sh 
echo Enter File Name 
read filename 
if [ -s $filename ] 
then 
echo The File Exists! 
else 
echo File did not previously exist 
touch $filename 
fi 
+1

在第四行有'}'而不是''' – Jacopofar 2013-05-03 12:41:32

+0

這是我的錯誤輸入,但問題仍然存在。感謝您指出,但它不會改變我的問題。 =( – 2013-05-03 12:44:06

+0

這工作很好,因爲它的寫作,我只是沒有正確調用它。* facepalm * – 2013-05-03 13:06:56

回答

3

你有兩個錯誤,一個是你寫的}而不是],另外一個是,你應該關閉]

#!/bin/sh 
echo Enter File Name 
read filename 
if [ -f "$filename" ]; then 
    echo The File Exists! 
else 
    echo File does not exist 
    touch "$filename" 
fi 

前添加一個空格作爲michaelb958建議你也應該報價$filename,因爲這會造成內部空間的文件名問題like this.html

你說你剛剛接觸過這個,那麼我會建議使用編輯或者具有良好的語法突出顯示,這將幫助您發現問題。

+1

注意'''''引用參數,如''$ filename「'。如果不包含空格的文件名可能會導致有趣的行爲。 – michaelb958 2013-05-03 12:44:54

+0

對,我在添加 – 2013-05-03 12:45:24

+0

@RossCournoyer哪個命令產生這個消息? – michaelb958 2013-05-03 12:49:06