shell中三种语句

1:if语句

if语句就是用来判断的

1:数字比较

这个几个比较都是适用于整数

-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在使用时,必须要带上""这个才行

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之间的命令被称为循环体,其中的执行语句需要需要引用变量来完成相应的任务操作。

  

格式就是

for i in 变量或者列表
do
    执行的代码
done

 

c语言的格式

for  ((初始值;限制值;执行步长))
do
    执行体
done
适合于数值方式的运算
初始值:就是循环的起始值
限制值:就是这个变量的值限制在这个方位内
执行的步长:每做一次循环时,变量的变化量

 

for循环的题目

1:从1加到100的和

num=0
for ((i=1;i<=100;i++))
do
        num=$(($num+$i))
done
echo "$num"

 

2:输出1到100之间的奇数和偶数

#/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开始到这个数求和

#/bin/bash
  
read -p "请输入小于100的数字" nnum
num=0
for ((i=1;i<=$nnum;i++))
do
        num=$(($i+$num))
done
echo "$num"

 

4:打印99乘法表

#/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:测试主机是否在线

for i in 192.168.10.{2..3}
do
        ping -c2 -w2 $i &> /dev/null
done
~    

 

-c就是发送包

-w就是超时等待2秒

 

6:输出/dev/目录下所有可执行文件或目录

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:添加一个文本里面的用户

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:直角三角形

#/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:等腰三角形

#/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等命令或者一些其他的命令来查看赋值

 

 

 

 

 

  

  

 

posted @ 2023-12-08 23:03  q_7  阅读(23)  评论(0编辑  收藏  举报