今天,我必须检查输入参数的存在和数量。我有以下脚本:
#!/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()函数中包含的条件之间的行为不同。有人可以帮帮我吗?
提前感谢
答案 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
是参数本身