2015-11-08 109 views
1

我必須這樣做:外殼腳本文件測試

a。接受文件名作爲命令行參數

b。檢查足夠數量的命令行參數。

c。檢查給定文件是否存在。 d)。檢查文件是否可讀。

e。退出程序成功使用語句出口0

這是我到目前爲止,但是當我運行腳本我總是得到「無效參數」和「文件不存在」作爲輸出。

#! /bin/bash 
filename=$1 

if [ $# -eq 1 ] 
    then 
    echo $1 
else 
    echo "Invalid argument" 
fi 

if [ -e "$1" ]; then 
    echo "File Exists" 
    exit 1 
else 
    echo "File Does not Exist" 
    exit 1 
fi 

if [ -r "$1" ]; then 
    echo "File is readable" 
    exit 1 
else 
    echo "File is not readable" 
    exit 1 
fi 
+0

我建議你將第一行改爲'#!/ bin/bash' - 即在hash-bang之後刪除空格。並將其添加爲腳本的第二行:'echo $#'。祝你好運。 –

+0

@Evogear你是否正在運行沒有參數的腳本? – sokin

+0

@BobJarvis輸出與添加「0」 – Evogear

回答

1

OK - 所以,你在bash myfilename.sh類型。這意味着您正在運行您的腳本,但不會傳遞任何參數到myfilename.sh。請嘗試以下操作:

echo "This is a test file" > testfile.dat 

這將創建一個名爲testfile.dat其中包含了一些文本文件。 (文件中的實際文本並不重要,如果你有時間可以輸入莎士比亞的完整作品,但它不會改變你的shell腳本的功能)。接下來,運行腳本

bash myfilename.sh testfile.dat 

或只是

myfilename.sh testfile.dat 

這裏你告訴你的腳本以檢查testfile.dat存在。

祝你好運。

+0

謝謝!它的工作原理如下:1 \ n testfile.dat \ n文件存在 – Evogear

+0

如果有人讀取並需要幫助,從if語句中移除出口1會使輸出顯示「File Exists」和「文件可讀」 – Evogear