1. 程式人生 > >4、字符串測試和for循環學習

4、字符串測試和for循環學習

字符串測試 for循環

bash常用的比較有三種
整數測試
文件測試
字符測試

現在我們開始講第三種:字符串測試
字符串測試:
一、兩個等於號==
記住==等號兩邊要有空格,否則會被識別成賦值的
[root@www tmp]# a=hello
[root@www tmp]# b=hi
[root@www tmp]# [[ $a == $b ]]
[root@www 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"
[root@www tmp]# bash l.sh
the sum is : 5050
實例2:
對所有用戶問好技術分享圖片

[root@zabbix 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循環學習