我正在尝试进行错误检查,这样如果文件不是普通文件,它将回显文件不是普通文件。
#!/bin/csh
echo Enter file name
set filename = $<
if(-f $filename)then
if(-z $filename)then
rm $filename
else
clear
echo $filename
du -sh $filename
stat -c %h $filename
stat -c %U $filename
date -r $filename
endif
else
echo File is not an ordinary file
endif
当我使用例如fake.txt运行时,它会出现
du:无法访问fake.txt': No such file or directory
stat: cannot stat
fake.txt':没有此类文件或目录
stat:无法统计`fake.txt':没有这样的文件或目录
date:fake.txt:没有这样的文件或目录
我错过了什么?
REDO:
#!/bin/csh
echo Enter file name
set filename = $<
endif
test -f $filename
if ( $status == 0 ) then
if(-z $filename)then
rm $filename
else
clear
echo $filename
du -sh $filename
stat -c %h $filename
stat -c %U $filenam
endif
else
echo "File is not an ordinary file."
endif
答案 0 :(得分:0)
有一种更简单的方法可以确定文件是否是常规文件(并且存在):
#!/bin/csh
echo "Enter filename: "
set filename = $<
test -f $filename
if ( $status == 0 ) then
echo "File is an ordinary file."
else
echo "File is not an ordinary file."
endif
# end of file.
有关test(1)如何工作的详细信息,请参阅相应的手册页。在这个例子中,我简单地使用了test(1)以非零退出代码退出的事实,以防未满足使用的测试条件:switch -f测试给定的参数是否存在并且是常规文件。