最近在看ABS这本神作。
分享一下今天学到的东西。
需求:在练习最大公约数这个脚本的时候,需要判断输入的参数一定是整数,其他情况则正常退出。
实现:用求最大公约数这个例子来实现。
代码如下:
#!/bin/bash
# gcd.sh: 求最大公约数
# date: 2011.08.10
# modified: Nigel_Zeng
# license: GPL
# ------------------------
# 参数检查
# 规范用法
ARGS=2
E_BADARGS=65
if [ $# -ne "$ARGS" ]
then
echo "Usage: `basename $0` first-number second-number"
exit $E_BADARGS
fi
# ---------------------------
# 是否为整数
# =~ 表示后面要使用正则表达式
if [[ $1 =~ [0-9]+ && $2 =~ [0-9]+ ]]
then :
else
echo "This two parameters must be Interger.";exit $E_BADARGS
fi
# ---------------------------
gcd ()
{
dividend=$1
divisor=$2
remainder=1
until [ "$remainder" -eq 0 ]
do
let "remainder=$dividend % $divisor"
dividend=$divisor
divisor=$remainder
done
}
gcd $1 $2
echo; echo "GCD of $1 and $2 = $dividend"; echo
exit 0
说明:
“ =~ ”表示后面要使用正则表达式来判断,这个是重点。
if [[ $1 =~ [0-9]+ && $2 =~ [0-9]+ ]] 表示 第一个参数和第二个参数要是包含0-9的数。
感谢云惺给的帮助。
·····积少成多········fight