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