4字符串测试和for循环学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4字符串测试和for循环学习相关的知识,希望对你有一定的参考价值。
bash常用的比较有三种
整数测试
文件测试
字符测试
现在我们开始讲第三种:字符串测试
字符串测试:
一、两个等于号==
记住==等号两边要有空格,否则会被识别成赋值的
[[email protected] tmp]# a=hello
[[email protected] tmp]# b=hi
[[email protected] tmp]# [[ $a == $b ]]
[[email protected] tmp]# echo $?
1
二、!=表示的是测试是否不等的,不等为真,等则为假
<= >=
< >字符串做大于小于一般是意义不大的
字符串做测试的时候还有单目操作符
三、字符测试常用比较操作符
-n string :测试指定的字符串是否为空,空为真,不空为假
-z string :测试指定的字符串是否不空,不空为真,空为假
#!/bin/bash
if [ $1= ‘q‘ ];then
echo "Quiting..."
exit 0
elif [ ! $1 = ‘quit‘ ];then
echo "Input right"
fi
字符串比较的练习
scale
上图scale=2;表示的是保留精度为2
循环结构
for循环
循环:一定要有进入条件,退出条件,不然cpu会一直在工作
bash常用循环有三种:for,while,until
这三个使用的语法格式各不相同
今天只讲最简单的一个就是for循环
do和for写在一行的话,就要有;,如果do第二行的话,那for那行就不用加;号了
自己平时习惯一种就好了,都写一行吧
所以有以下两种格式
for 变量 in 列表;do
循环体
done
或者
for 变量 in 列表
do
循环体
done
当列表遍历完成之后,退出:
如何生产列表:
1、生产整数列表{1..100}
2、 seq命令替换 ——意思为序列,意思为数值序列
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
INCREMENT表示增长率
seq [起始数[步进长度]] 结束数
[]表示的是[]内部是可以省略的
我们要在for中用seq的话,要用命令替换``或者$( )
用法 ‘seq [起始数[步进长度]]结束数‘
变量刚开始使用都被认为是字符串,如果想要他变成数值,可以用let
像SUM=0默认0就是字符串,要它为可以运算的数值,就用let SUM=0
或者用declare -i SUM=0
-i就是整型interger
-x定义成环境变量
实例:进行计算1+...100的和
#!/bin/bash
declare -i SUM=0
for I in {1..100}
do
let SUM=$[$SUM+$I]
done
echo "the sum is : $SUM"
[[email protected] tmp]# bash l.sh
the sum is : 5050
实例2:
对所有用户问好
[[email protected] myshell]# cat for.sh
#!/bin/bash
nameid=cat /etc/passwd | cut -d: -f1 | wc -l
for i in seq 1 $nameid
;do
Username=cat /etc/passwd | cut -d: -f1 | tail -$i | head -1
echo -e "\033[031mHello ,$Username\033[0m"
done
练习
#!/bin/bash
LINE=cat /etc/passwd | cut -d: -f1 | wc -l
for I in seq 1 $LINE
do
USERName=cat /etc/passwd | cut -d: -f1 | tail -$I | head -1
USERShells=cat /etc/passwd | cut -d: -f7 | tail -$I | head -1
echo "hello,$USERName,your shells is $USERShells"
done
#!/bin/bash
for I in {1..10}
do
if [ $1 == useradd ];then
$1 user$I
echo "$I" | passwd --stdin user$I
echo "the user$I added successful..."
fi
if [ $1 == userdel ];then
$1 -r user$I
echo "the user$I already delete..."
fi
done
以上是关于4字符串测试和for循环学习的主要内容,如果未能解决你的问题,请参考以下文章
[Linux Shell学习系列七]Bash循环——1for循环
如何使用引导程序和 for 循环在 django 中创建电影片段?