2013-06-19 45 views
0

我想让一个错误信息出现,如果有人运行我的脚本,但不存在的文件作为参数输入。这个简短的bash脚本/函数为什么不起作用?可能的解决方案? (UNIX bash脚本)

function finder(){ 
if test find $1 ; then 
exit 0 
else 
exit 1 
fi 
} 

#### error message if file does not exist 

if test finder -eq 1 ; then 
echo "safe_rm: cannot remove '$1' : No such file or directory" 
fi 

我得到一个错误消息,说一个整数从手指功能的预期 - 但它不应该产生的0或1的退出状态,根据我的功能?

如何让我的if语句,说:“如果取景器的存在状态为1,则回声‘没有这样的文件或目录是否存在?’

任何建议表示赞赏!

回答

1

为什么不若[-d /路径/到/文件夹]或如果[-f /路径/ TP /文件]

+0

好,谢谢!我只使用了if test -e文件名行! – DeaIss

3

几个问题:

  1. exit停止脚本返回来自AF的值请使用return

  2. test不会将命令作为其第一个参数。详细信息请参见man test

  3. finder -eq 1不运行finder,它把它作为一个字符串。

你真正的意思是像

if test -e "$1" ; then 
    # ... 
else 
    echo "$1 does not exists." 
fi 
+0

+1,但应该提到,如果函数被保留,'如果测试发现者-eq 1'应该被重写'if finder'$ 1“;然后......以便调用它 –

0

或者您可以使用:

if [ ! -e $1 ] ; then 
    echo "safe_rm: cannot remove '$1' : No such file or directory" 
fi