任务描述
本关任务:编写一个脚本,求一个数的逆序表示。
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
; 预期输出: 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 }