shell中三种语句
1:if语句
if语句就是用来判断的
1:数字比较
这个几个比较都是适用于整数
1 2 3 4 5 6 7 8 9 10 | - eq 等于;如: if [ $a - eq $b ] - ne 不等于; if [ $a - ne $b ] -gt 大于; if [ $a -gt $b ] - ge 大于等于; if [ $a - ge $b ] -lt 小于; if [ $a -lt $b ] - le 小于等于; if [ $a - le $b ] < 小于;需要双括号(( $a < $b )) <= 小于等于; (( $a <= $b )) > 大于;(( $a > $b )) >= ;(( $a > $b )) |
2:字符串比较
在比较的情况下,一般使用"",比较的安全
选项:
= | 等于 |
== | 等于 |
!= | 不等于 |
< | 小于(按照字母顺序) |
> | 大于 |
-z | 字符串为null,即长度为0 |
-n | 字符串不为null,即长度不为0 |
列子:
1)判断字符为空还是不为空
-n在使用时,必须要带上""这个才行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | str3= '' if [ -n "$str3" ]; then echo "不为空" else echo "长度为0" fi str2= '123123' echo "$str2" if [ -z "$str2" ]; then echo "字符长度为0" else echo "字符长度不为0" fi |
2)判断字符串是否相等
3:条件测试
-e | 文件存在 |
-f | 判断是否文件 |
-s | 文件长度不为0 |
-d | 文件是否为目录 |
-b | 文件是否为块设备 |
-r | 文件是否具有读的权限 |
2:for语句
for语句就是循环语句,要指定一个列表或者变量,就是有具体的循环的次数,可以使用for语句
介绍:
使用for循环语句时,需要指定一个变量及取值列表,针对每个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。然后在这里取值列表也被称为for语句的执行条件。
for循环是固定循环,也就是在循环的一开始就已经知道需要进行几次循环,有时候也把for循环称之为计数循环。
for循环的次数取决于in后面的个数(以空格分隔),有几个值就循环几次,并且每次循环都把值赋予变量。也就是说,加假设in后面有三个值,for就循环三次。第一个的循环会把值“1”赋予变量,第二次的循环会把值“2”赋予变量,以此类推。
do…done之间的命令被称为循环体,其中的执行语句需要需要引用变量来完成相应的任务操作。
格式就是
1 2 3 4 | for i in 变量或者列表 do 执行的代码 done |
c语言的格式
1 2 3 4 5 6 7 8 | for ((初始值;限制值;执行步长)) do 执行体 done 适合于数值方式的运算 初始值:就是循环的起始值 限制值:就是这个变量的值限制在这个方位内 执行的步长:每做一次循环时,变量的变化量 |
for循环的题目
1:从1加到100的和
1 2 3 4 5 6 | num=0 for ((i=1;i<=100;i++)) do num=$(($num+$i)) done echo "$num" |
2:输出1到100之间的奇数和偶数
1 2 3 4 5 6 7 8 9 10 11 12 | #/bin/bash #奇数 for ((i=1;i<=100;i+=2)) do echo "$i" >> /mnt/num.txt done #偶数 for ((i=0;i<=100;i+=2)) do echo "$i" >> /mnt/num.txt done |
3:提示用户输入一个小于100的数,并且从1开始到这个数求和
1 2 3 4 5 6 7 8 9 | #/bin/bash read -p "请输入小于100的数字" nnum num=0 for ((i=1;i<=$nnum;i++)) do num=$(($i+$num)) done echo "$num" |
4:打印99乘法表
1 2 3 4 5 6 7 8 9 | #/bin/bash for i in `seq 9` do for j in `seq $i` do echo -e -n "$i*$j=$(($j*$i))\t" done echo done |
5:测试主机是否在线
1 2 3 4 5 | for i in 192.168.10.{2..3} do ping -c2 -w2 $i &> /dev/ null done ~ |
-c就是发送包
-w就是超时等待2秒
6:输出/dev/目录下所有可执行文件或目录
1 2 3 4 5 6 7 8 9 10 | a=$(ls /dev) for i in $a do b=`ls -l /dev/$i | awk '{print $1}' |grep 'x' ` case $? in (0) echo "/dev/$i" ;; esac done |
7:添加一个文本里面的用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | b=`cat user .txt` for i in $b do #先要判断是否存在用户名 id $i &> /dev/ null if [ $? -eq 0 ]; then echo "用户已经存在" else useradd $i echo "redhat" | passwd --stdin $i &> /dev/null if [ $? -eq 0 ]; then echo "$i is created" fi fi done |
8:直角三角形
1 2 3 4 5 6 7 8 9 10 11 12 13 | #/bin/bash #打印一个直角三角形,请输入高 #先想好循环几次(有高来决定的) #就是n=1时,循环一次,打印一个*,一次类推 read -p "请输入直角三角形的高" h for ((i=1;i<=h;i++)) do for j in `seq $i` do echo -n "* " done echo done |
9:等腰三角形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #/bin/bash #打印一个等腰三角形 read -p "请输入等腰三角形的高" h for ((i=1;i<=h;i++)) do #输出空格数 a=$(($h-$i)) for j in `seq $a` do echo -n " " done b=$((2*$i-1)) for k in `seq $b` do echo -n "*" done echo done |
思路就是:
第一步先打印好有多少行
第二步再来想打印多少个空格(就是2边的空格)
第三步就打印一行有几个 2n-1,第一行一个,第二行三个
就是有几个变量来控制,第一个变量控制打印几行,第二个变量控制每一行的空格有几个,第三个变量控制每一行有几个*
关于for语句的总结
关于使用for语句来完成一些计算的语句,就是要弄明白这个计数的总值在那里
就是以空格作为分隔符,遇到空格就执行语句,就是接收一个列表或者一个指定的范围内的值,如果不好接受的话,可以使用cat等命令或者一些其他的命令来查看赋值
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步