bash脚本检查输入参数

时间:2014-11-17 14:58:56

标签: bash shell

今天,我必须检查输入参数的存在和数量。我有以下脚本:

#!/bin/bash

echo "*** Test ***"
echo
echo $#
echo $*

function test1(){
   echo "test"
}

function GetTime()
{
   echo "Get Time function"
   if [ "$#" -ne 1 ]; then
       echo "Illegal number of parameters"
   else
       test1
   fi
}

if [ "$#" -ne 1 ]; then
    echo "Illegal number of parameters"
else
    test1
    GetTime  
fi

当我输入./test.sh GetTime时,我得到了

*** Test ***

1
GetTime
test
Get Time function
Illegal number of parameters

我不明白为什么第一个条件和GetTime()函数中包含的条件之间的行为不同。有人可以帮帮我吗?

提前感谢

1 个答案:

答案 0 :(得分:3)

它是不同的,因为第一个$#中的if引用了shell脚本的参数数量。其中,$#秒表示GetTime函数的参数数量

要了解更多信息,我已将GetTime功能修改为

#!/bin/bash

echo "*** Test ***"
echo
echo $#
echo $*

function test1(){
   echo "test"
}

if [ "$#" -ne 1 ]; then
    echo "Illegal number of parameters"
else
    test1   
fi

function GetTime()
{
   echo "Get Time function"
   echo "$# $@"
   if [ "$#" -ne 1 ]; then
       echo "Illegal number of parameters"
   else
       test1
   fi
}

GetTime 
GetTime 2 

输出

*** Test ***
1
GetTime
test
Get Time function
0 
Illegal number of parameters
Get Time function
1 2
test

这是第一次致电GetTime给出

Get Time function
0 
Illegal number of parameters

其中0是传递的参数数量

和第二次调用GetTime 2

产生输出

Get Time function
1 2
test

其中1是传递的参数数量,2是参数本身

相关问题