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

浙公网安备 33010602011771号