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
}
目录
相关文章
|
3月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
454 9
|
3月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
367 2
|
6月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
289 60
|
3月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
5月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
652 1
shell脚本编程基础
shell脚本编程基础
|
存储 Shell Linux
shell脚本编程之基础
shell脚本编程之基础
210 0
|
9月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。