泷羽sec-----shell编程(6)
声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
if条件判断
前言
正如python
语言中一样,if
条件也是有分支结构的。
大致结构为:
if [ 条件判断1 ]; then
执行1
elif [ 条件判断2 ];then
执行2
else
执行3
fi
如果条件判断1为true则执行1,如果条件判断1为false;条件判断2为true则执行2.如果都为false,则执行3。fi结束
变量数字比较判断
#!/bin/bash
num1=10
num1=20
if [ "$num1" -eq "$num2" ];then
echo "相等"
elif [ "num1" -gt "$num2" ]; then
echo "num1大于num2"
else
echo "num1小于num2"
fi
当然。这里确保num1和num2都是数字才这么写的
当然,这里也可以自己输入数字然后判断大小
使用read即可,这里在前面有涉及,这里复习一下
#!/bin/bash
read -p "请输入两个数字进行大小比较: "
if [ "$1" -eq "$2" ]; then
echo "$1等于$2"
elif [ "$1" -gt "$2" ]; then
echo "$1大于$2"
elif
echo "$1小于$2"
fi
read的-p参数,是在用户输入时,显示该字符,可用作提示
$1是指用户输入的第一个参数值
$2是指用户输入的第二个参数值
-eq是等于
-gt是大于
-lt是小于
-ge是大于等于
-le是小于等于
这里注意用户的输入必须全是数字,因为这里的-eq都是数字比较才能使用的。
并且也没有进行判断用户的输入是否是数字,这里暂时不写
if [ "$#" -gt "2" ]; then
echo "请输入两个数字,这里只比较两个"
exit 0
fi
这里表示如果用户输入的数字大于两个就会输出提示并立马退出脚本
$#表示传参个数,这里甚至可以进行比较传参,因为这里是两个数的比较,如果大于三个,则输出一些提示
采用read比较判断数字
采用 $#进行判断用户输入
for循环
前言
类似于python
中的for
循环,不过结构有些差异
结构
for num in 1 2 3 4 5
do
echo "这是循环体"
done
或这种结构
for num in 1 2 3 4 5 ;do
echo "这是循环体"
done
for num in .... 表示num按后面的进行遍历
do表示循环的开始
done表结束
遍历具体数字
for num in 1 2 3 4 5
do
echo "当前数字为:$num"
done
num就直接被赋予1 2 3 4 5 ,按照顺序赋值
遍历数字范围
for num in {1..5};do
echo "当前数字是:$num"
done
遍历1-5的数字,包括1和5.
for num in {1..10..2};do
echo "当前数字是:$num"
done
在{}中1..10是范围,表示1-10,后面的..2表示步长,也就是数字1-10每次+2
1 3 5 7 9 ,步长为2
注意,上面的一些数字范围,在老版本的`sh`中并不能运行,可以使用`bash`
或者使用seq
for num in $(seq 1 5);do
echo "当前数字是:$num"
done
//$seq(1 5)表示1-5,包括1和5
for num in $(seq 1 2 9);do
echo "当前数字是:$num"
done
//$(seq 1 2 9)表示生成1-9范围内的数字,并且步长是2
使用{1…9…2}给数字范围
使用$(seq 1 2 9)给数字范围
遍历字符列表
for str in "longyu666"
do
echo "当前的字符为: $str"
done
for循环的迭代对象只是一个整体的字符串 "longyu666",而不是逐个字符。所以实际上整个循环只会迭代一次,在这唯一的一次迭代中,变量str会被赋值为整个字符串 "longyu666",然后执行循环体中的echo语句
对于想要获取其中的字符,可以通过${str:i:0},i用于循环
i可用于表示下标,然后截取直到str的长度为止
${#str}//表示str字符串的长度
${str:0:1}//表示截取下标为0的一个字符
${str:1:1}//表示截取下标为1的一个字符
${str:2:1}//表示截取下标为2的一个字符
注意,这里只是说下,并不深入学习,这个涉及到列表
说到列表,就以一个例子简单了解
longyu=("xiaoyu","long")
for e in "${longyu[@]}"
do
echo "当前师傅是:$e"
done
这里老版的sh
还是不能执行,使用bash
即可
这里不详细说明,只是简单了解,后面再深入学习
本文来自博客园,作者:whitehe,转载请注明原文链接:https://www.cnblogs.com/whitehe/p/18578403