0
本帖最后由 coffee 于 2014-12-2 14:43 编辑
{:5_121:}
{:5_121:}
- #!/bin/bash
- #by coffee
- number=`echo "$@"`
- int1=`echo $number |awk '{print$1}'`
- int2=`echo $number |awk '{print$2}'`
- sum(){
- plus=$(($int1+$int2))
- minus=$(($int1-$int2))
- multiply=$(($int1 * $int2))
- divide=$(($int1 / $int2))
- echo "$int1+$int2=$plus"
- echo "$int1-$int2=$minus"
- echo "$int1*$int2=$multiply"
- echo "$int1/$int2=$divide"
- }
- if [ $# == 2 ]
- then
- if [[ -z ${int1//[0-9]} ]] && [[ -z ${int2//[0-9]} ]]
- then
- sum
- else
- echo "Non-integer"
- exit
- fi
- else
- echo "Not two parameters"
- exit
- fi
0
本帖最后由 王肖强 于 2014-12-1 11:53 编辑
正则是这样子: grep -Po '^[\d]+$' > /dev/null 上面把 $' 自动给替换了。坑
{:4_102:}
- #!/bin/bash
- # Test script.
- # Writen by Wangxiaoqiang 2014-12-01.
- if [ $# -ne 2 ]
- then
- echo "Usage : $0 int1 int2 "
- exit 1
- else
- echo $1 | grep -Po '^[\d]+
- {:4_102:} > /dev/null
- if [ $? -ne 0 ];then
- echo "'$1' not is integer ."
- exit 2
- fi
- echo $2 | grep -Po '^[\d]+
- {:4_102:} > /dev/null
- if [ $? -ne 0 ];then
- echo "'$2' not is integer ."
- exit 3
- fi
- fi
- a=`expr $1 + $2`
- b=`expr $1 - $2`
- c=`expr $1 \* $2`
- d=`expr $1 / $2`
- echo "$1 + $2 = $a "
- echo "$1 - $2 = $b "
- echo "$1 * $2 = $c "
- echo "$1 / $2 = $d "
{:4_102:}
0
你的答案是错的,你验证了吗?还有你最后那个是什么意思?
王肖强 发表于 2014-12-1 11:49
正则是这样子: grep -Po '^[\d]+$' > /dev/null 上面把 $' 自动给替换了。坑
你的答案是错的,你验证了吗?还有你最后那个是什么意思?
0
我没大明白你这个结果要什么 ?
你是想输入后直接计算出 加 减 乘 除 的结果吗 ?
还是想用户来选择计算方式 ,是加 是减 是乘 亦或是 除 ?
我那个可以一次性算出来 加 减 乘 除 的结果。因为是你要求的是输入整数,所以没有处理精度。除的结果不会显示精度。如 2 除 3 会显示 0 ,就这一个问题。
最后那一句话是说:脚本中的那条语句实际是那个样子 ,上传的时候 ,不知道为何被自动替换掉了,所以我补了一句 !
希望回答一下,争取能完善这个脚本。 thanks
t236xuchunfang 发表于 2014-12-1 15:20
你的答案是错的,你验证了吗?还有你最后那个是什么意思?
我没大明白你这个结果要什么 ?
你是想输入后直接计算出 加 减 乘 除 的结果吗 ?
还是想用户来选择计算方式 ,是加 是减 是乘 亦或是 除 ?
我那个可以一次性算出来 加 减 乘 除 的结果。因为是你要求的是输入整数,所以没有处理精度。除的结果不会显示精度。如 2 除 3 会显示 0 ,就这一个问题。
最后那一句话是说:脚本中的那条语句实际是那个样子 ,上传的时候 ,不知道为何被自动替换掉了,所以我补了一句 !
希望回答一下,争取能完善这个脚本。 thanks
0
你的脚本是显示不用以交互方式输入的,直接在执行脚本的时候输入两个,例如sh qq.sh 1 2然后出现结果是
[root@localhost ~]# sh nn.sh 1 2
1-2 =-1
1+2 =3
1*2 =2
1/2 =0
1**2 =1
1%2 =1,但是你的执行没有这个结果。
你试着做吧,要答案和我说。
王肖强 发表于 2014-12-1 17:19
我没大明白你这个结果要什么 ?
你是想输入后直接计算出 加 减 乘 除 的结果吗 ?
还是想用户来选择计 ...
你的脚本是显示不用以交互方式输入的,直接在执行脚本的时候输入两个,例如sh qq.sh 1 2然后出现结果是
[root@localhost ~]# sh nn.sh 1 2
1-2 =-1
1+2 =3
1*2 =2
1/2 =0
1**2 =1
1%2 =1,但是你的执行没有这个结果。
你试着做吧,要答案和我说。
0
#!/bin/bash
#### Scripts Name:calculator.sh
#### My Blog:http://laowang.me
function print_good () {
echo -e "\x1B[01;32m[+]\x1B[0m $1"
}
function print_error () {
echo -e "\x1B[01;31m[-]\x1B[0m $1"
}
function print_info () {
echo -e "\x1B[01;34m\x1B[0m $1"
}
if [ "$#" != "2" ]; then
print_error "请输入两个正整数,两个数字以空格隔开。"
print_info "比如这样:5 5"
exit
else
if [[ "$*" = *.* ]]; then
print_error "不能含有小数点,只能是正整数"
print_info "比如这样:5 5"
exit
else
presult=$(($1+$2))
sresult=$(($1-$2))
mresult=$(($1*$2))
dresult=$(($1/$2))
print_good "+: $1 + $2 = $presult"
print_good "-: $1 - $2 = $sresult"
print_good "*: $1 * $2 = $mresult"
print_good "/: $1 / $2 = $dresult"
fi
fi
#### Scripts Name:calculator.sh
#### My Blog:http://laowang.me
function print_good () {
echo -e "\x1B[01;32m[+]\x1B[0m $1"
}
function print_error () {
echo -e "\x1B[01;31m[-]\x1B[0m $1"
}
function print_info () {
echo -e "\x1B[01;34m
}
if [ "$#" != "2" ]; then
print_error "请输入两个正整数,两个数字以空格隔开。"
print_info "比如这样:5 5"
exit
else
if [[ "$*" = *.* ]]; then
print_error "不能含有小数点,只能是正整数"
print_info "比如这样:5 5"
exit
else
presult=$(($1+$2))
sresult=$(($1-$2))
mresult=$(($1*$2))
dresult=$(($1/$2))
print_good "+: $1 + $2 = $presult"
print_good "-: $1 - $2 = $sresult"
print_good "*: $1 * $2 = $mresult"
print_good "/: $1 / $2 = $dresult"
fi
fi
0
#!/bin/bash
##filename:suanshu.sh
##使用传参的方法写个脚本,实现加减乘除的功能。例如: sh a.sh 1 2 (脚>本自带判断功能,判断参数为两个并且为整数)。
##write by 2016-01-21
if [ $# -eq 2 ];then
p1=`echo "$1"|sed 's/[0-9]//g'`
p2=`echo "$2"|sed 's/[0-9]//g'`
if [ -z "$p1" ]||[ "$p1" == "-" ]&&[ -z "$p2" ]||[ "$p2" == "-" ];then
aa=$[$1+$2]
bb=$[$1*$2]
cc=$[$1-$2]
dd=$[$1/$2]
echo "$1 与 $2 的和为:$aa ; 差为:$cc ; 乘为:$bb ; 除为:$dd"
else
echo "$1 或 $2 不是整数"
fi
else
echo "参数不是2个!"
fi
##filename:suanshu.sh
##使用传参的方法写个脚本,实现加减乘除的功能。例如: sh a.sh 1 2 (脚>本自带判断功能,判断参数为两个并且为整数)。
##write by 2016-01-21
if [ $# -eq 2 ];then
p1=`echo "$1"|sed 's/[0-9]//g'`
p2=`echo "$2"|sed 's/[0-9]//g'`
if [ -z "$p1" ]||[ "$p1" == "-" ]&&[ -z "$p2" ]||[ "$p2" == "-" ];then
aa=$[$1+$2]
bb=$[$1*$2]
cc=$[$1-$2]
dd=$[$1/$2]
echo "$1 与 $2 的和为:$aa ; 差为:$cc ; 乘为:$bb ; 除为:$dd"
else
echo "$1 或 $2 不是整数"
fi
else
echo "参数不是2个!"
fi
0
#!/bin/bash
if [ ! -z $1 ] && [ ! -z $2 ] && [ $# -eq 2 ]
then
echo "have two parameter"
else
echo "parameter wrong"
exit 1
fi
n1=$(echo $1|sed 's/[0-9]//g')
n2=$(echo $2|sed 's/[0-9]//g')
if [ -z $n1 ] && [ -z $n2 ]
then
sum=$(($1+$2))
minu=$(($1-$2))
multi=$(($1*$2))
divid=$(($1/$2))
echo "sum is $sum"
echo "minu is $minu"
echo "multi is $multi"
echo "divid is $divid"
else
echo "not a number"
exit 1
fi
if [ ! -z $1 ] && [ ! -z $2 ] && [ $# -eq 2 ]
then
echo "have two parameter"
else
echo "parameter wrong"
exit 1
fi
n1=$(echo $1|sed 's/[0-9]//g')
n2=$(echo $2|sed 's/[0-9]//g')
if [ -z $n1 ] && [ -z $n2 ]
then
sum=$(($1+$2))
minu=$(($1-$2))
multi=$(($1*$2))
divid=$(($1/$2))
echo "sum is $sum"
echo "minu is $minu"
echo "multi is $multi"
echo "divid is $divid"
else
echo "not a number"
exit 1
fi
编辑回复