声明:声明:以下内容来自泷羽sec的学习笔记,仅作学习,如有按照知识进行破环网络安全,后果自负!!
泷羽sec:https://space.bilibili.com/350329294/channel/collectiondetail?sid=4031268&spm_id_from=333.788.0.0
资源自取:
链接:https://pan.baidu.com/s/1c4PplGyH7oG217jPQtqGQg?pwd=fnb3
提取码:fnb3
链接:https://pan.quark.cn/s/f5865bd3f98a
四、shell的关系运算
1.shell的交互
-
read :用于从标准输入中读取一行,并将读取的单行根据IFS(内部字段分隔符)变量分裂成多个字段,然后将分割后的字段分别赋值给指定的变量列表。如果没有指定任何变量,则分割后的所有字段都存储在特定变量REPLY 中
同样还用于文件读取
基本用法
- 读取单个变量:
read variable
会将整行输入赋值给指定的变量。 - 读取多个变量:
read var1 var2 var3
会将输入行分割,第一个字段赋值给var1
,第二个字段赋值给var2
,第三个字段赋值给var3
。如果字段数量多于变量数量,多余的字段会被忽略。 - 读取到数组:使用
-a
选项可以将输入分割后存储到数组中。例如:read -a array
会将输入分割后存储到数组array
中。
选项说明
-p "prompt"
:在等待输入前显示提示信息。-t seconds
:设置等待输入的时间(秒)。-n nchars
:读取指定数量的字符后结束。-s
:隐藏输入数据,常用于密码输入。-d delim
:使用指定的字符作为输入结束标志。-r
:禁止对输入行进行转义处理
- 读取单个变量:
先进入bash 然后输入
read -t 10 -p “pease input your name:” name
如果不输入名字,那么10秒之后退出 ;输入了,可以通过 echo $name 获取的name的值
read -t 10 -n2 -p “please input your name:” name
后面加上-n 可以限定输入的字符,但记住不能有空格,否则会报错
2.shell的关系运算符
首先定义两个变量然后通过if条件判断来进行两个简单的条件判断 再接入关系运算符。
-eq(相等)
-lt(小于)
-gt(大于)
-ne(不等于)
else (反转)
tips:只能对数值进行判断,无法对字符串进行判断
编写shell脚本内容如下
name= 89
name2= 90
if [ $name -eq $name2 ] ;
then
echo ”xiangdeng“
else
echo ”buxiangdeng“
fi
脚本解释:
shell 初始化两个变量的值,一个是name变量值为89,一个变量值为90;
通过了条件判断语句 if 进行判断两者比较的值为真 还是为假;如果if中比较两者的值时相等的,则为真,输出then的 echo ;如果if中比较两者的值时相等的,则为假,则输出else的echo
注意:[] 里面两边都需要增加空格
tips:if
语句的结束标记。在shell脚本中,每个if
,for
,while
等控制结构都需要一个结束标记来表示语句的结束,这个结束标记就是fi
。在你的例子中,fi
就是if
语句的结束标记
现在进行比较,如果是两个变量的值相等,那么输出xiangdeng 如果不相等则输出buxiangdeng
name= 90
name2= 90
if [ $name -eq $name2 ] ;
then
echo ”xiangdeng“
else
echo ”buxiangdeng“
fi
name=60
name2=90
if [ $name -lt $name2 ] ;
then
echo ”True“
else
echo ”False“
fi
name= 60
name2= 90
if [ $name -gt $name2 ] ;
then
echo ”True“
else
echo ”False“
fi
name= 60
name2= 90
if [ $name -ne $name2 ] ;
then
echo ”True“
else
echo ”False“
fi