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

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

任务描述

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


Shell 传递参数

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

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


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


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

字符 说明
$# 传递到脚本的参数的个数
$* 以一个单字符串显示所有传递的参数
$$ 脚本运行的当前进程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------------------


编程要求

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


测试说明

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

测试输入:15 1 256 1000; 预期输出: 5116520001

注意:转换后的一组数字一行展示一个,请勿包含任何空格,输入数字介于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
}
目录
相关文章
|
17天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
102 1
|
19天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
15 0
|
1天前
|
监控 Shell 开发工具
Shell编程
Shell编程
|
1天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
2天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
10 1
|
6天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
136 0
|
6天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
121 0
|
16天前
|
Shell
【shell】实时查看网卡流量脚本
【shell】实时查看网卡流量脚本
|
存储 Shell Linux
shell脚本编程之基础
shell脚本编程之基础
111 0