2015-11-08 106 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