Shell脚本编程实践——第2关:编写一个脚本,求一个数的逆序表示

任务描述

本关任务:编写一个脚本,求一个数的逆序表示。

Shell 传递参数

Shell脚本使用$符号能够引用到执行该脚本时向其传递的参数,test.sh脚本内容如下:

 #!/bin/bash echo "参数个数为:$# 个" echo "执行的文件名是:$0" echo "第一个参数是:$1" echo "第二个参数是:$2"

调用脚本test.sh时后面所加的参数即为传递的参数,方式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bnqVV3RL-1666196739160)(https://data.educoder.net/api/attachments/2158821)]

可见参数被按次序传入脚本。除此之外,还有一些特殊字符可以对参数进行处理:

字符说明
$#传递到脚本的参数的个数
$*以一个单字符串显示所有传递的参数
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$* 类似,但是它会将每个参数使用引号括起来显示
$-显示Shell使用的当前选项
$?显示最后命令的退出状态
Shell运算符

Shell与其他编程语言一样,支持多种运算符。包括:

  • 算术运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符

本节中我们将着重讲解算数运算符与关系运算符。

1)算数运算符

原生bash不支持简单的数学运算,必须通过其他命令实现,expr是一款表达式计算工具,在Shell脚本中较常使用。 实例:计算两个数相加之和。

 #!/bin/bash val=`expr 1 + 5` #注意此处使用的是反引号而不是单引号,且表达式和运算符之间必须要有空格 echo "两数之和为$val"
运算符说明备注
+加法
-减法
*乘法
/除法
%取余
=赋值例如:a = $b
==相等。用于比较两数是否相同例如:[ $a == $b ] 返回false。条件表达式必须放在方括号之间,并且要有空格
!=不相等。用于比较两数是否相同例如:[ $a != $b ] 返回true
2)关系运算符

在Shell中关系运算符只支持数字,常用的关系运算符如下表所示(假设a=1,b=2):

运算符说明示例
-eq检测两个数字是否相等[ $a -eq $b ]返回false
-ne检测两个数字是否不相等[ $a -eq $b ]返回true
-gt检测左边的数字是否比右边的数字大[ $a -gt $b ]返回false
-lt检测左边的数字是否比右边的数字小[ $a -gt $b ]返回true
-ge检测左边的数字是否大于等于右边的数字[ $a -gt $b ]返回false
-le检测左边的数字是否小于等于右边的数字[ $a -gt $b ]返回true
Shell 函数

Shell定义函数的格式为

 [ function ] funname [()] {     action;     [return int;] }

需要注意的是,方括号中的内容为可选内容,参数返回部分若不定义,则将默认返回最后一条命令的运行结果。 示例:定义一个函数并调用。

  # 在test.sh中定义一个test函数  test(){     echo "Hello,openEuler!"  }  echo "-----------loading......-------------"  test  echo "----------------end------------------"

运行结果如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PwTdR4JH-1666196739164)(https://data.educoder.net/api/attachments/2159465)]

编程要求

根据提示,在右侧编辑器补充代码,计算并按格式输出数字的逆序表示。

测试说明

平台会对你编写的代码进行测试:

测试输入:15 1 256 1000; 预期输出: 51 1 652 0001

注意:转换后的一组数字一行展示一个,请勿包含任何空格,输入数字介于1~65535之间。


开始你的任务吧,祝你成功!

#!/bin/bash
reverseNum(){
    array_len=$# #测试集个数
    for num in $*
    do
        #请在此处键入您的代码
        x=$num
        #ans=""
        while [ $x -gt 0 ]
        do
            t=$[$x%10]
            echo -e "$t\c"
            #ans=$[$ans$t]
            x=$[$x/10]
        done
        echo ""
    done
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真题OK撒

你的打赏将是我最大的创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值