自学shell编程——补充知识点——键盘输入read,数学运算、书写注意、trap捕捉

自学shell编程——补充知识点——键盘输入read、数学运算

1. 在执行*.sh文件过程中键盘输入一个值,而不是命令行传参,使用read命令

复习知识点:命令行参数在shell脚本中对应$1、$2、$3……,直接使用即可

read如何使用,这里列举两种方式
#!/bin/bash
#出现一个提示语句,并将键盘输入的结果赋值到一个指定变量中
echo "please input a number"
read num1
echo $num1

read -p "please input a number:" num2
echo $num2
#两个都可以,你会发现第二个更舒服

#输入两个值
read -p "please input a2 number:" num3 num4
num5=`expr $num3 + $num4`     #假设输入3 4;对输入的数值进行计算:7
num5=$[$num3-$num4]           #输出-1
let num5=$num3*$num4          #输出12
num6=$num3+$num4              #输出3+4
echo $num3;echo $num4;echo $num5

2. shell脚本的数学运算,包括+、-、*、/、%(加减乘除取余)

前面例子中已经给出了三种方式,这里做一个总结。expr命令、$[]、let

#1. 使用expr命令,格式为
sum=`expr num1 运算符 num2`
#2. 使用$[],格式为
sum=$[$num1运算符$num2]
#3. 使用let,格式为
let sum=$num1运算符$num2

3. shell脚本中数值变量定义

前面提到shell的变量只有字符串一种类型,如果需要做数值运算,可以使用2提到的3种方法。当然,你也可以选择再定义变量时直接定义为数值类型(declare:设定变量值和属性)

#使用declare
declare -i n=1
n=$n+1
echo $n               #输出2。如果没有前面的declare -i,则输出结果1+1

4. trap捕捉(其实我也不懂,这就是学的课程里面有的,我就列出来,大家自行查看)

trap命令类似于系统编程中的signal函数,用于捕捉信号。根据捕捉到的信号进行对于的操作。** 该功能多用于系统维护,平常自己的shell脚本可能用不到,如果你需要了,再认真学习。 **

  1. ** 格式:trap 响应内容 信号 **
  2. 信号值查看:kill -l 和trap -l,共有64个信号值。在这里插入图片描述
    其中最常用为:18)SIGCONT 19)SIGSTOP 9)SIGKILL。
  3. 举个例子。SIGINT信号是用户键盘输入INTR字符或者使用ctrl+c触发。shell脚本接收到SIGINT信号(即接收到INTR字符或者ctrl+c),打印字符串hello。
#!/bin/bash
fun()
{
	echo " hello"
}

trap fun SIGINT      #也可以写成INT或者2
#这里写一个死循环,让shell脚本一直执行
declare -i n=0
while test $n -eq 0
do
	n=0
done

#执行:./trap.sh   #你在键盘输入INTR字符或者ctrl+c,会在后面接收到 hello。

这里就要考虑,将ctrl+c识别为SIGINT信号,那么该如何终止该程序。使用命令killall -9 trap.sh。

总结:书写注意

  1. 对于特殊字符,如*,\,$,?等等这些有特殊含义的字符,如果要进行简单使用,注意前面加转义符\。如输出字符串$1,你不能直接echo $1或者echo “$1”,你要使用 echo '$1’或者echo"$1"。这样才能保证输出结果为字符串$1。
  2. 命令行输入参数时,习惯先判断参数个数是否满足
  3. 输出的变量中存在连续空格时,使用echo “$str”;而不是echo $str。后者输出只保留一个空格。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值