SHELL03 - 循环结构 shell字体颜色 case语句、函数中断控制

一、循环结构

让特定代码重复执行

1.for循环

1)特点:循环的次数是固定的!

2)语法结构及特点

for  变量    in   值1    值2   …

do 

    命令

done

for    ((i=1;i<10;i++))               /另一种写法

do

  命令

done

###########################

seq  1  5   =   seq  5  =  echo  {1..5}    默认起始位置为1

seq  1  2  5  –输出1  3 5 ,第一个1为起始位置   中间的2为步长  第三个5为结束位置 

###########################

3)应用

# 输出3个chenguiz             / 或  `seq 3`    或 {1..3}

for  i  in  1 2 3 

do 

echo “chenguiz”

done

###########################

# 快速创建1000个文件

for  i  in  {1..1000}

do 

touch /tmp/i&nbsp;.txt</p><p>done</p><p>###########################</p><p>#读取用户文件,自动创建用户,初始密码为123456</p><p>for&nbsp;i&nbsp;in&nbsp; i&nbsp;.txt</p><p>done</p><p>###########################</p><p>#读取用户文件,自动创建用户,初始密码为123456</p><p>for&nbsp;i&nbsp;in&nbsp; (cat /root/user.txt)

do

id i&nbsp;&amp;&gt;/dev/null</p><p>if&nbsp;[&nbsp; i&nbsp;&amp;&gt;/dev/null</p><p>if&nbsp;[&nbsp; ? -ne 0 ];then

        useradd i</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"123456"&nbsp;|&nbsp;passwd&nbsp;--stdin&nbsp;&nbsp; i</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"123456"&nbsp;|&nbsp;passwd&nbsp;--stdin&nbsp;&nbsp; i &>/dev/null

        echo ”i&nbsp;用户创建成功!"</p><p>else</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;" i&nbsp;用户创建成功!"</p><p>else</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;" i 用户已存在” >> /root/user.log

fi

done

###########################

#拼网段,分开导出以便查看

for  i in {113..119}

do

ping -c 2  -i0.1 -W1 172.40.55.i&nbsp;&nbsp;&amp;&gt;/dev/null &nbsp; &nbsp; (-c:发送的包个数 &nbsp;-i:发送每个数据包之间的间隔 &nbsp;-W:等待响应的时间)</p><p> if&nbsp;&nbsp;[&nbsp; i&nbsp;&nbsp;&amp;&gt;/dev/null &nbsp; &nbsp; (-c:发送的包个数 &nbsp;-i:发送每个数据包之间的间隔 &nbsp;-W:等待响应的时间)</p><p> if&nbsp;&nbsp;[&nbsp; ? -eq 0 ];then

echo  “172.40.55.i&nbsp;&nbsp;&nbsp;is&nbsp;up&nbsp;!"&nbsp;&nbsp;&gt;&gt;/root/up.log</p><p> else&nbsp;</p><p> echo&nbsp;&nbsp;"172.40.55. i&nbsp;&nbsp;&nbsp;is&nbsp;up&nbsp;!"&nbsp;&nbsp;&gt;&gt;/root/up.log</p><p> else&nbsp;</p><p> echo&nbsp;&nbsp;"172.40.55. i   is down !” >>/root/down.log

fi

done

###########################

Shell输出颜色控制:
文字颜色30-37:
echo -e “\033[30m 黑色字 \033[0m” 
echo -e “\033[31m 红色字 \033[0m” 
echo -e “\033[32m 绿色字 \033[0m” 
echo -e “\033[33m 黄色字 \033[0m” 
echo -e “\033[34m 蓝色字 \033[0m” 
echo -e “\033[35m 紫色字 \033[0m” 
echo -e “\033[36m 天蓝字 \033[0m” 
echo -e “\033[37m 白色字 \033[0m”


背景颜色40-47
echo -e “\033[40;37m 黑底白字 \033[0m” 
echo -e “\033[41;37m 红底白字 \033[0m” 
echo -e “\033[42;37m 绿底白字 \033[0m” 
echo -e “\033[43;37m 黄底白字 \033[0m” 
echo -e “\033[44;37m 蓝底白字 \033[0m” 
echo -e “\033[45;37m 紫底白字 \033[0m” 
echo -e “\033[46;37m 天蓝底白字 \033[0m” 
echo -e “\033[47;30m 白底黑字 \033[0m”

末尾控制选项:
\33[0m 关闭所有属性
\33[1m 设置高亮度 
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m — \33[37m 设置前景色 
\33[40m — \33[47m 设置背景色 
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

2.while循环

1)特点:不定次数,当判断为真时,一直循环执行;判断为假,则循环结束。

    四循环的缺点:超耗内存,需sleep   0.1

2)结构

while   [ 判断 ]

do

   命令

done

 

while  :        /死循环固定格式   加冒号

do 

  命令

done

###########################

3)应用

#循环10次

i=1

while [ i&nbsp;-le&nbsp;10&nbsp;]</p><p>do</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"你好!"</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i= i&nbsp;-le&nbsp;10&nbsp;]</p><p>do</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"你好!"</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i= [i+1]        或let  i++                 /循环10次

done

###########################

#无限猜

num= [RANDOM [ R A N D O M cai  -eq num&nbsp;];then</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<span style="font-family:'DejaVu Sans';">恭喜你,猜对了!共猜了</span><span style="font-family:Calibri;"> num&nbsp;];then</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<span style="font-family:'DejaVu Sans';">恭喜你,猜对了!共猜了</span><span style="font-family:Calibri;"> i 次。”

          exit                                            /猜对并退出

        elif [ cai&nbsp;-gt&nbsp; cai&nbsp;-gt&nbsp; num ];then

          echo ”猜大了”

        else

          echo ”猜小了”

        fi

done

###########################

打印一个9*9乘法表

难点:不换行  echo  -n   “2*1=2”   ;echo  -n   “2*2=4” 

         for i  in   `seq  9`              for  j  in   `seq  9`

          echo “ i i ∗ j=[i*j]”</p><p>#!/bin/bash</p><p>for&nbsp;&nbsp;i&nbsp;in&nbsp;`seq&nbsp;&nbsp;9`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>do&nbsp;</p><p> for&nbsp;j&nbsp;in&nbsp;&nbsp;`seq&nbsp;&nbsp; [i*j]”</p><p>#!/bin/bash</p><p>for&nbsp;&nbsp;i&nbsp;in&nbsp;`seq&nbsp;&nbsp;9`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>do&nbsp;</p><p> for&nbsp;j&nbsp;in&nbsp;&nbsp;`seq&nbsp;&nbsp; i`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/$i让j永远小于等于i

do

   echo  -n ” i i ∗ j=[i*j]&nbsp;&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/<span style="font-family:'DejaVu Sans';">引号最后留个空格以隔开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p> done</p><p> echo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/<span style="font-family:'DejaVu Sans';">里面执行完后换行</span></p><p>done</p><p>###########################</p><p>&nbsp;</p><p><strong><span style="color:rgb(63,63,63);">二、服务脚本设计</span></strong></p><p><strong><span style="color:rgb(63,63,63);">1.case分支结构</span></strong></p><p>1)case&nbsp;<span style="font-family:'DejaVu Sans';">语句&nbsp;【简单的</span><span style="font-family:Calibri;">if</span><span style="font-family:'DejaVu Sans';">:只能执行等于的值,判断等于和不等于】</span></p><p>case&nbsp;&nbsp;&nbsp;<span style="font-family:'DejaVu Sans';">变量&nbsp;&nbsp;&nbsp;</span><span style="font-family:Calibri;">in</span></p><p>值<span style="font-family:Calibri;">1</span><span style="font-family:'DejaVu Sans';">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;命令;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family:Calibri;">/</span><span style="font-family:'DejaVu Sans';">命令结束用双分号</span></p><p>值<span style="font-family:Calibri;">2</span><span style="font-family:'DejaVu Sans';">)</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;命令;;</p><p>值<span style="font-family:Calibri;">*</span><span style="font-family:'DejaVu Sans';">)</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;命令;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/最后一个值的双分号可加可不加</p><p>esac</p><p>###########################</p><p>当运行<span style="font-family:Calibri;">/root/foo.sh&nbsp;redhat</span><span style="font-family:'DejaVu Sans';">,输出为</span><span style="font-family:Calibri;">fedora&nbsp;</span><span style="font-family:'DejaVu Sans';">;当运行</span><span style="font-family:Calibri;">/root/foo.sh&nbsp;fedora</span><span style="font-family:'DejaVu Sans';">,输出为</span><span style="font-family:Calibri;">redhat&nbsp;</span><span style="font-family:'DejaVu Sans';">;当没有任何参数或者参数不是&nbsp;</span><span style="font-family:Calibri;">redhat&nbsp;</span><span style="font-family:'DejaVu Sans';">或者&nbsp;</span><span style="font-family:Calibri;">fedora</span><span style="font-family:'DejaVu Sans';">时,其错误输出产生以下信息:&nbsp;</span><span style="font-family:Calibri;">/root/foo.sh&nbsp;redhat|fedora&nbsp;</span></p><p>#!/bin/bash</p><p>case&nbsp;&nbsp; [i*j]&nbsp;&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/<span style="font-family:'DejaVu Sans';">引号最后留个空格以隔开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p> done</p><p> echo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/<span style="font-family:'DejaVu Sans';">里面执行完后换行</span></p><p>done</p><p>###########################</p><p>&nbsp;</p><p><strong><span style="color:rgb(63,63,63);">二、服务脚本设计</span></strong></p><p><strong><span style="color:rgb(63,63,63);">1.case分支结构</span></strong></p><p>1)case&nbsp;<span style="font-family:'DejaVu Sans';">语句&nbsp;【简单的</span><span style="font-family:Calibri;">if</span><span style="font-family:'DejaVu Sans';">:只能执行等于的值,判断等于和不等于】</span></p><p>case&nbsp;&nbsp;&nbsp;<span style="font-family:'DejaVu Sans';">变量&nbsp;&nbsp;&nbsp;</span><span style="font-family:Calibri;">in</span></p><p>值<span style="font-family:Calibri;">1</span><span style="font-family:'DejaVu Sans';">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;命令;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family:Calibri;">/</span><span style="font-family:'DejaVu Sans';">命令结束用双分号</span></p><p>值<span style="font-family:Calibri;">2</span><span style="font-family:'DejaVu Sans';">)</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;命令;;</p><p>值<span style="font-family:Calibri;">*</span><span style="font-family:'DejaVu Sans';">)</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;命令;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/最后一个值的双分号可加可不加</p><p>esac</p><p>###########################</p><p>当运行<span style="font-family:Calibri;">/root/foo.sh&nbsp;redhat</span><span style="font-family:'DejaVu Sans';">,输出为</span><span style="font-family:Calibri;">fedora&nbsp;</span><span style="font-family:'DejaVu Sans';">;当运行</span><span style="font-family:Calibri;">/root/foo.sh&nbsp;fedora</span><span style="font-family:'DejaVu Sans';">,输出为</span><span style="font-family:Calibri;">redhat&nbsp;</span><span style="font-family:'DejaVu Sans';">;当没有任何参数或者参数不是&nbsp;</span><span style="font-family:Calibri;">redhat&nbsp;</span><span style="font-family:'DejaVu Sans';">或者&nbsp;</span><span style="font-family:Calibri;">fedora</span><span style="font-family:'DejaVu Sans';">时,其错误输出产生以下信息:&nbsp;</span><span style="font-family:Calibri;">/root/foo.sh&nbsp;redhat|fedora&nbsp;</span></p><p>#!/bin/bash</p><p>case&nbsp;&nbsp; 1   in

readhat)  

echo  “nihao”          /命令未完不用分号

echo  “fedora”;;       /命令结束用双分号

fedora)

echo “readhat”;;

*)

echo ’/root/foo.sh redhat|fedora ’;;

esac

###########################

创建选项

#!/bin/bash

case  1&nbsp;&nbsp;in</p><p>-t)</p><p> touch&nbsp;&nbsp; 1&nbsp;&nbsp;in</p><p>-t)</p><p> touch&nbsp;&nbsp; 2;;

-c)

cat  2;;</p><p>-e)</p><p> vim&nbsp;&nbsp; 2;;</p><p>-e)</p><p> vim&nbsp;&nbsp; 2;;

-d)

rm  -rf   2;;</p><p>*)</p><p> echo&nbsp;&nbsp;“<span style="font-family:'DejaVu Sans';">用法:</span><span style="font-family:Calibri;">test.sh&nbsp;[-t|-c|-e|-d]</span><span style="font-family:'DejaVu Sans';">文件</span><span style="font-family:Calibri;">”</span></p><p>esac</p><p>###########################</p><p>read&nbsp;-p&nbsp;&nbsp;“<span style="font-family:'DejaVu Sans';">请输入任意:</span><span style="font-family:Calibri;">”&nbsp;&nbsp;&nbsp;key</span></p><p>case&nbsp;&nbsp;&nbsp; 2;;</p><p>*)</p><p> echo&nbsp;&nbsp;“<span style="font-family:'DejaVu Sans';">用法:</span><span style="font-family:Calibri;">test.sh&nbsp;[-t|-c|-e|-d]</span><span style="font-family:'DejaVu Sans';">文件</span><span style="font-family:Calibri;">”</span></p><p>esac</p><p>###########################</p><p>read&nbsp;-p&nbsp;&nbsp;“<span style="font-family:'DejaVu Sans';">请输入任意:</span><span style="font-family:Calibri;">”&nbsp;&nbsp;&nbsp;key</span></p><p>case&nbsp;&nbsp;&nbsp; key    in 

[a-z])                   /case的优势,支持[ ] 

echo  “字母”;;

[0-9])

echo  “数字”;;

*)

echo  “其他字符”;;

esac

 

三、函数及中断控制

1.shell函数

1)定义函数(脚本执行完就失效):   

函数名() {  命令序列 }      或  function    函数名 { 命令序列 }

2)调用函数

     # chen(){ mkdir -p 1;&nbsp;cd&nbsp;&nbsp; 1;&nbsp;cd&nbsp;&nbsp; 1; pwd; }           /定义

     #chen   /mnt/chen         /调用

###########################

定义函数 . 

.(){ .|.& }   /&放入后台,一直执行. 本身,死循环,耗光内存瞬间死机

###########################

定义颜色的函数,方便调用

cecho(){  echo  -e  “\033[1m&nbsp;&nbsp; 1m&nbsp;&nbsp; 2  \033[0m” }

cecho  32  ok

cecho  33  nihao


2.中断及退出

1) break:中断整个循环

   continue:中断本次循环,进入下一次循环

   exit:结束整个脚本 =kill,默认返回是0

  # ssh  172.40.55.i&nbsp;&nbsp;“poweroff”&nbsp;&nbsp;&nbsp;&nbsp;/<span style="font-family:'DejaVu Sans';">直接把</span><span style="font-family:Calibri;"> i&nbsp;&nbsp;“poweroff”&nbsp;&nbsp;&nbsp;&nbsp;/<span style="font-family:'DejaVu Sans';">直接把</span><span style="font-family:Calibri;"> i关机

###########################

for  i  in  {1..10}

do

[  i&nbsp;&nbsp;-eq&nbsp;&nbsp;5&nbsp;]&nbsp;&nbsp;&amp;&amp;<span style="color:rgb(128,0,0);">&nbsp;&nbsp;break</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/break<span style="font-family:'DejaVu Sans';">显示到</span><span style="font-family:Calibri;">4</span><span style="font-family:'DejaVu Sans';">之后就执行</span><span style="font-family:Calibri;">GameOver</span></p><p> echo&nbsp;&nbsp; i&nbsp;&nbsp;-eq&nbsp;&nbsp;5&nbsp;]&nbsp;&nbsp;&amp;&amp;<span style="color:rgb(128,0,0);">&nbsp;&nbsp;break</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/break<span style="font-family:'DejaVu Sans';">显示到</span><span style="font-family:Calibri;">4</span><span style="font-family:'DejaVu Sans';">之后就执行</span><span style="font-family:Calibri;">GameOver</span></p><p> echo&nbsp;&nbsp; 1                                   /continue跳过5显示所有

done                                                  /exit  显示到4就结束整个脚本

echo  “Game  Over !” 

###########################

从键盘循环取整数(0结束)并求和,输出最终结果

sum=0

while  :

do

read  -p  “请输入待累加的整数:”  num          / 键盘循环取整数

num&nbsp;&nbsp;-eq&nbsp;&nbsp;0&nbsp;&nbsp;]&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;0<span style="font-family:'DejaVu Sans';">结束</span></p><p> sum= num&nbsp;&nbsp;-eq&nbsp;&nbsp;0&nbsp;&nbsp;]&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;0<span style="font-family:'DejaVu Sans';">结束</span></p><p> sum= [ sum + num ]                /求和

done

echo “总和是:sum&nbsp;”</span></p><p>###########################</p><p>跳过<span style="font-family:Calibri;">1~20</span><span style="font-family:'DejaVu Sans';">以内非</span><span style="font-family:Calibri;">6</span><span style="font-family:'DejaVu Sans';">的倍数,输出其他数的平方值,设定退出代码为</span><span style="font-family:Calibri;">2&nbsp;</span></p><p>for&nbsp;&nbsp;i&nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;{1..20}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/1~20<span style="font-family:'DejaVu Sans';">以内</span></p><p>do</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp; sum&nbsp;”</span></p><p>###########################</p><p>跳过<span style="font-family:Calibri;">1~20</span><span style="font-family:'DejaVu Sans';">以内非</span><span style="font-family:Calibri;">6</span><span style="font-family:'DejaVu Sans';">的倍数,输出其他数的平方值,设定退出代码为</span><span style="font-family:Calibri;">2&nbsp;</span></p><p>for&nbsp;&nbsp;i&nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;{1..20}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/1~20<span style="font-family:'DejaVu Sans';">以内</span></p><p>do</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp; [i%6]  -ne  0  ]  &&  continue         /非6的倍数

        echo   [i*i]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;<span style="font-family:'DejaVu Sans';">输出其他数的平方值</span></p><p>done</p><p>exit&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;<span style="font-family:'DejaVu Sans';">设定退出代码为</span><span style="font-family:Calibri;">2</span></p><p><span style="font-family:Calibri;">-------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p><p></p><p><span style="font-family:Calibri;">练习题:</span></p><p><span style="font-family:Calibri;">1 编写uaddfor.sh脚本,根据用户名列表快速添加用户账号。</span></p><span style="font-family:Calibri;">需要添加的账号名称保存在/root/users.txt文件中,每行一个用户名。要求在执行uaddfor.sh脚本后,能够为这些用户名快速添加好系统账号,并将登录密码设置为1234567。<br>#!/bin/bash<br>if [ [i*i]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;<span style="font-family:'DejaVu Sans';">输出其他数的平方值</span></p><p>done</p><p>exit&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;<span style="font-family:'DejaVu Sans';">设定退出代码为</span><span style="font-family:Calibri;">2</span></p><p><span style="font-family:Calibri;">-------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p><p></p><p><span style="font-family:Calibri;">练习题:</span></p><p><span style="font-family:Calibri;">1 编写uaddfor.sh脚本,根据用户名列表快速添加用户账号。</span></p><span style="font-family:Calibri;">需要添加的账号名称保存在/root/users.txt文件中,每行一个用户名。要求在执行uaddfor.sh脚本后,能够为这些用户名快速添加好系统账号,并将登录密码设置为1234567。<br>#!/bin/bash<br>if [ # -eq 0 ];then
        echo “please input fileName”
        exit 1
elif [ ! -f 1 ];then<br>&nbsp; &nbsp; &nbsp; &nbsp; echo "input file is not found"&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; exit 2<br>fi<br>for username in 1 ];then<br>&nbsp; &nbsp; &nbsp; &nbsp; echo "input file is not found"&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; exit 2<br>fi<br>for username in (cat 1)<br>do<br>&nbsp; &nbsp; &nbsp; &nbsp; id 1)<br>do<br>&nbsp; &nbsp; &nbsp; &nbsp; id username &> /dev/null
        if [ ? -eq 0 ];then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo " ? -eq 0 ];then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo " username has exit”
        else
                useradd username<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 1234567 | passwd --stdin username<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 1234567 | passwd --stdin username
        fi
done

2 编写sumwhile脚本,计算从1-100之间所有整数的和。
#!/bin/bash
sum=0
i=1
while [ i -le 100 ]<br>do<br>&nbsp; &nbsp; &nbsp; &nbsp; sum= i -le 100 ]<br>do<br>&nbsp; &nbsp; &nbsp; &nbsp; sum= [sum+i]
        let i++
done
echo sum<br><br>3 简述Linux服务脚本中的case分支结构。<br><span> </span>case分支结构就是开关结构<br><span> </span>当匹配上了给出的条件;就执行相应的程序,然后不会再往下执行<br><span> </span>#!/bin/bash<br>#use case program :<br># &nbsp; &nbsp; &nbsp; when you input redhat the output is fedora<br># &nbsp; &nbsp; &nbsp; when you input fedora the output is redhat<br>case sum<br><br>3 简述Linux服务脚本中的case分支结构。<br><span> </span>case分支结构就是开关结构<br><span> </span>当匹配上了给出的条件;就执行相应的程序,然后不会再往下执行<br><span> </span>#!/bin/bash<br>#use case program :<br># &nbsp; &nbsp; &nbsp; when you input redhat the output is fedora<br># &nbsp; &nbsp; &nbsp; when you input fedora the output is redhat<br>case 1 in
redhat)
        echo “fedora”;;
fedora)
        echo “redhat”;;
*)
        echo “your input is not redhat or fedora”

esac

4 简述定义一个Shell函数的两种方法。
function 函数名{
}
函数名(){

}

5 简述Shell环境常见的中断及退出控制指令。
continue :跳出本轮循环,并不会跳出整个循环体
break:  跳出循环体,执行循环体后面的语句
exit :  退出脚本,默认返回值是0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值