前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实验(八)Shell 算术运算、选择结构

实验(八)Shell 算术运算、选择结构

原创
作者头像
esse LL
修改2023-04-21 19:06:25
5600
修改2023-04-21 19:06:25
举报
文章被收录于专栏:操作系统实验

1. 新建工作目录

目录命名为班级加姓名的格式,如 1banz3

参考代码:

代码语言:shell
复制
mkdir 1banz3
# 切到 1banz3 目录:
cd 1banz3

2. 创建Shell脚本文件

代码语言:shell
复制
touch compute.sh

3. 编辑Shell脚本

代码语言:shell
复制
vi compute.sh

输入以下代码:

代码语言:shell
复制
#!/bin/bash
#(())
a=2
b=$((a**2)) #幂运算
echo $b
f=$((c=b+3,d=b-3,e=d*3))
echo $c $d $e $f
#bc
echo "2.3+5.8"|bc
echo "scale=3;8/3"|bc
echo "scale=3;var1=8;var1/3"|bc #scale指定小数位数
var2=3
echo "scale=3;var1=8;var1/$var2"|bc #引用Shell变量:用$
var3=$(echo "scale=3;var1=8;var1/$var2"|bc)
echo "var3=$var3" #打印var3的值

4. yum安装bc计算程序

代码语言:shell
复制
sudo yum install bc

提示做选择时按y然后按回车即可

输入命令bc按回车可以直接运行bc计算程序

代码语言:shell
复制
bc

启动bc程序后会进入交互式计算模式,例如,输入 1.1*3 按回车,会打出计算结果 3.3

bc的内置变量 scale 可以指定除法或取余运算的小数位数

例如:4/3的结果是1。

将scale赋值为3,再输入4/3,可以看到结果为1.333

另外,使用bc内定义的变量不需要$符号

退出bc程序:输入 quit 命令

5. 运行Shell脚本

代码语言:shell
复制
chmod +x compute.sh
./compute.sh

参考运行结果

代码语言:text
复制
4
7 1 3 3
8.1
2.666
2.666
2.666
var3=2.666

6. 文件测试脚本

代码语言:shell
复制
touch test1.sh

输入以下代码:

代码语言:shell
复制
echo "判断当前工作目录下是否有hello.c文件:存在结果为0,否则为1"
[ -a hello.c ] # 条件测试语句,与 test -a hello.c 等价。注意参数用空格隔开
echo "结果是:$?" #使用$?查看上述条件测试运行的结果
if [ ! -f hello.c ]
then
  echo "hello.c文件不存在,即将用touch命令新建hello.c文件"
  touch hello.c
  [ -a hello.c ]
  echo "新建文件后再次判断的结果是:$?"
else
  echo "hello.c文件已存在,可以用ll hello.c查看权限"
fi
  • 条件测试的表达式写在一对方括号[]内,例如 [ -f hello.c ],或者采用test命令加参数的写法,例如 test -f hello.c,所以要注意:不同的运算符(方括号也算在内)和操作数用空格隔开。
  • Shell编程中,条件测试结果为true,则返回退出状态为0,否则结果为false,并返回非0退出状态。
  • 所以,编写Shell时,不能以C编程中0表示false,非0表示true的方式来理解。
  • ! 是逻辑运算符的一种,可以放在任何表达式前面,表示逻辑非运算的结果。注意,使用逻辑非运算符左右用空格隔开。

运行脚本

代码语言:shell
复制
bash test1.sh

参考运行结果:

代码语言:text
复制
判断当前工作目录下是否有hello.c文件:存在结果为0,否则为1
结果是:1
hello.c文件不存在,即将用touch命令新建hello.c文件
新建文件后再次判断的结果是:0

可以再次运行脚本,看到第二种运行结果:

代码语言:text
复制
判断当前工作目录下是否有hello.c文件:存在结果为0,否则为1
结果是:0
hello.c文件已存在,可以用ll hello.c查看权限

7. if 选择结构

新建if.sh脚本

输入以下代码:

代码语言:shell
复制
#!/bin/bash
read -p "请输入你的分数:" Score
if [ "$Score" -ge 0 -a "$Score" -le 59 ];then
    echo "不通过"
elif [ "$Score" -ge 60 -a "$Score" -le 79 ];then
    echo "通过"
elif [ "$Score" -ge 80 -a "$Score" -le 100 ];then
    echo "优秀"
else
    echo "请输入一个0到100之间的数"
fi
  • 条件测试中,整数的比较有专用的写法,例如-eq表示运算符前后两个整数值相等,-ne表示运算符前后两个整数值不相等,而常用的=!=运算符专用于比较字符串。
  • -a 是逻辑运算符中的逻辑与运算,类似的,-o 表示逻辑或。
  • 逻辑运算的优先级会低于比较运算,但可以用圆括号改变优先级顺序,需要注意的是,在Shell中,圆括号需要用反斜杠转义后使用。

运行if.sh脚本,参考运行结果:

代码语言:text
复制
请输入你的分数:60
通过

8. case选择结构

新建case.sh脚本

输入以下代码:

代码语言:shell
复制
#!/bin/bash
read -n 1 -p "请输入一个字符:" char
echo
case $char in 
    [a-z])
        echo "小写字母"
        ;;
    [A-Z])
        echo "大写字母"
        ;;
    [0-9])
        echo "阿拉伯数字"
        ;;
    *)
        echo "其它符号"
esac

参考运行结果:

代码语言:text
复制
请输入一个字符:A
大写字母

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 新建工作目录
  • 2. 创建Shell脚本文件
  • 3. 编辑Shell脚本
  • 4. yum安装bc计算程序
  • 5. 运行Shell脚本
  • 6. 文件测试脚本
  • 7. if 选择结构
  • 8. case选择结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档