我需要更新这个bash函数,我用它来处理git:
push() {
a=$1
if [ $# -eq 0 ]
then
a=$(timestamp)
fi
# ... do stuff
}
但我不知道这条线路是如何运作的
if [ $# -eq 0 ]
我需要检查第一个论点,然后我需要检查第二个论点。
所以会有2个if语句。
我如何更新这个以及这条线如何工作
if [ $# -eq 0 ]
$#
部分是一个变量,包含传递给脚本的参数数量。
那里的条件语句使用-eq
检查该变量的值,并检查该值是否为零(就像没有传递参数一样)。
为了检查两个参数,您可以将该行更改(或添加)为如下所示:
if [ $# -eq 2 ]
您可以创建一个小脚本来查看当使用不同数量的参数调用函数时$#
是如何变化的。例如:
["push.sh"的内容:]
push() {
echo $#
}
echo "First call, no arguments:"
push
echo "Second call, one argument:"
push "First argument"
echo "Third call, two arguments:"
push "First argument" "And another one"
如果你把它放在一个脚本中并运行它,你会看到这样的东西:
-> % ./push.sh
First call, no arguments:
0
Second call, one argument:
1
Third call, two arguments:
2
这告诉您$#
的值包含给函数的参数数。
您可以将if [ $# -eq 0 ]
部分添加到脚本中,并将0更改为其他数字,以查看会发生什么。此外,在互联网上搜索"bash-if"将揭示-eq
部分的含义,并表明您也可以使用-lt
或-gt
,例如,测试一个数字是否小于或大于另一个数字。
最后,您可能想要使用以下内容:
a=$1
b=$2
if [ $# -lt 1 ]
then
a=$(timestamp)
fi
if [ $# -lt 2 ]
then
b=$(second thing)
fi