传递参数函数不起作用

Passing argument function not working

valid()
{
 if [[ "" = "0" ]]; then
        echo "Pass a file name as argument"
        exit 1
 fi
}

valid
if [ -f  ]; then
        echo " exists"
else
        echo " doesnt exist"
fi

在上面的例子中,vaild()函数没有起作用,为什么?传递有效参数时,它会检查文件名并打印,但未传递时,它会打印 "exists".

当将字符串作为参数时,您应该检查 null 个字符串,而不是将其与 0 进行比较。您还需要将参数传递给有效函数。

valid()
{
 if [ -z "" ]; then
        echo "Pass a file name as argument"
        exit 1
 fi
}

valid 

if [ -f "" ]; then
        echo " exists"
else
        echo " doesnt exist"
fi

而不是 if [[ "" = "0" ]]; then 您可以简单地将其更改为:

if [[ "" = "" ]]; then

它会按预期工作。

并且您还需要在 [ ] 语法中对变量进行双引号。 [[ ]] 语法可以处理空格而不需要任何双引号,但 [ ] 不能。