Shell(二)入门到复杂 脚本实例(计算器)

简介:

Shell(一) 入门到复杂 自己做的各种脚本实例与解释

shell文件开头
shell文件必须以下面的行开始(必须方在文件的第一行): 
#!/bin/sh 
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 
当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 
要使脚本可执行:
运行chmod +x filename这样才能用./filename 来运行


注释 
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。


变量 
在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明,直接赋值就可以,应用变量的话,用$+变量名的形式。


要赋值给一个变量,您可以这样写:
a="hello world" 
现在打印变量a的内容:
echo "A is:" 
echo $a 

有时候变量名很容易与其他文字混淆,比如: 
num=2 
echo "this is the $numnd" 

这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,
但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量: 
num=2 
echo "this is the ${num}nd" 
这将打印: this is the 2nd

环境变量
.
由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录
脚本中使用环境变量。

这些不是系统命令,但是他们真的很重要。

管道 (|) : 将一个命令的输出作为另外一个命令的输入。
grep "hello" file.txt | wc -l
file.txt中搜索包含有”hello”的行并计算其行数
在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。
重定向 将命令的结果输出到文件,而不是标准输出(屏幕)。
> 写入文件并覆盖旧文件
>> 加到文件的尾部,保留旧文件内容。
反短斜线
使用 反短斜线 (" ` ")可以将一个命令的输出作为另外一个命令的一个命令行参数。

数值变量:

expr 变量1 运算符 变量2 [运算符 变量3]

+加法运算

-减法运算

\*乘法运算

%求模运算 相除后的余数

预定义变量是由bash程序预先定义好的一类特殊变量,用户只能使用而不能创建新的预定义变量,也不能直接为预定义变量赋值。常见预定义变量如下:

$#表示命令行中位置参数的个数

$*表示所有位置参数的内容

$?表示前一条命令执行后的返回状态,返回为0表示执行正确,任何非0表示运行出现异常

$0表示当前执行的脚本或程序名称


计算器脚本实例:


代码:(因为刚学 做的可能不怎么好这是本人自己做的,下面第二种方法附上老师做的,虽然功能都一样!但是代码量明显比我小很多!)

#!/bin/bash
#计算器
echo "----------------------"
echo "-   加法运算请输入1  -"
echo "-   减法运算请输入2 -"
echo "-  乘法运算请输入3  -"
echo "-   除法运算请输入4  -"
echo "-       -技术空创作     -"
echo "----------------------"
read -p "请选择你想要进行的运算int
case "$int" in
1)
 while :
 do
 read -p "请输入第一个整数"  a
    expr $a+0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第一个数是$a"
       break
else
       echo "您输入的$a不是整数请重新输入"
fi
done
while :
do
 read -p "请输入第二个整数"  b
expr $b +0 &> /dev/null
if [ $? -eq 0 ]
 then
echo "第二个数是$b"
       break
else
       echo "您输入的$b不是整数请重新输入"
fi
done
sum=`expr $a + $b`
 echo "$a + $b = $sum"
;;
2)
 while :
 do
 read -p "请输入第一个整数"  c
    expr $c+0 &> /dev/null
if [ $? -eq ]
 then
       echo "第一个数是$c"
       break
else
       echo "您输入的$c不是整数请重新输入"
fi
done
while :
do
 read -p "请输入第二个整数"  d
expr $d+0 &> /dev/null
if [ $? -eq 0 ]
then
       echo "第二个数是$d"
       break
else
       echo "您输入的$d不是整数请重新输入"
fi
done
jian=`expr $c - $d`
 echo "$c - $d = $jian"
;;
3)
 while :
do
 read -p "请输入第一个整数"  e
    expr $e+&> /dev/null
if [ $? -eq 0 ]
 then
       echo "第一个数是$e"
       break
else
       echo "您输入的$e不是整数请重新输入"
fi
done
while :
do
 read -p "请输入第二个整数"  f
expr $f +0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第二个数是$f"
       break
else
       echo "您输入的$f不是整数请重新输入"
fi
done
chen=`expr $e \* $f`
 echo "$e \* $f $chen"
;;
4)
 while :
 do
 read -p "请输入第一个整数"  q
    expr $q+&> /dev/null
if [ $? -eq 0 ]
 then
       echo "第一个数是$q"
       break
else
       echo "您输入的$q不是整数请重新输入"
fi
done
while :
do
read -p "请输入第二个整数"  w
expr $w+0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第二个数是$w"
  break
else
       echo "您输入的$w不是整数请重新输入"
fi
done
chu=`expr $q / $w`
 echo "$q / $w = $chu"
;;
esac


------------------------------------------------------------------------------------------------------

#!/bin/bash
echo " ----------------------------------"
echo "|这是一个简单的整数计算器,作者YUAN|"
echo " ----------------------------------"
echo
while :
do
read -p  "请输入一个整数: " nu
expr $nu + 0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第一个数是$nu"
       echo
       break
else
       echo "您输入的$nu不是整数请重新输入"
fi
done

while :
do
read -p  "请输入二个整数: " nu2
expr $nu2 + 0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第二个数是$nu2"
       break
else
       echo "您输入的$nu2不是整数请重新输"
fi
done
echo  "------------------"
echo "|  1.加法          |"
echo "|  2.减法          |"
echo "|  3.乘法         |"
echo "|  4.除法         |"
echo  "------------------"
read -p "请输入您想执行的算法:" me
case $me in
       "1")
sum=`expr $nu + $nu2`
echo "$nu+$nu2=$sum"
;;
       "2")
jian=`expr $nu - $nu2`
echo "$nu-$nu2=$jian"
;;
       "3")
chen=`expr $nu \* $nu2`
echo "$nu*$nu2=$chen"
;;
       "4")
chu=`expr $nu / $nu2`
echo "$nu/$nu2=$chu"
esac

老师的代码很精简比我的代码少多了,不过刚开始都这样!慢慢来慢慢学!创意也是一种学习的方法


最后附上个自己做的猜价格小游戏:



脚本如下:

#!/bin/bash
#猜价格游戏
i=10
jiage=`expr $RANDOM % $i`
times=0
echo "商品实际价格在0-9之间,猜猜看是多少?"
while true
do
  read -p "请输入你猜测的价格数目:" INT
  let times++
  if [ $INT -eq $jiage ] ; then
      echo "恭喜你答对了,实际价格是 $jiage"
      echo " 你总共猜测了$times 次"
      exit 0
  elif [ $INT -gt $jiage ] ; then
      echo "太高了"
      else
      echo "太低了"
fi
done



本文转自 cs312779641 51CTO博客,原文链接:http://blog.51cto.com/chenhao6/1232070



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