码迷,mamicode.com
首页 > 其他好文 > 详细

day04脚本练习题

时间:2016-06-17 19:43:01      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:day04脚本练习题

1、在fun.sh脚本里定义函数sum_two(功能是能够计算任意两个数相加的和)

#!/bin/bash

#yi=$1

#er=$2

if [ -z $yi ] || [ -z $er ];then

echo数字不能为空

if

sum_two() {

#sum=`expr $yi + $er`

sum=`expr $1 + $2`

#echo "$yi + $er = $sum"

echo "$1 + $2 = $sum"

}

#sum_two $1 $2  

sum_two $*



#!/bin/bash

read -p "请输入你要计算的第一个数:" yi

read -p "请输入你要计算的第二个数:" er

if [ -z $yi ] || [ -z $er ];then

        echo "数字不能为空"

        exit

fi

sum_two(){

        sum=`expr $yi + $er`

        echo "他们的和是 $sum"

}

sum_two



2、js_four.sh(对任意一个数做四则运算,并把运算结果输出,并能够根据

    用户选择运算的类型做运算)


#!/bin/bash


#!/bin/bash

jia(){

        i=0

        while [ $# -gt 1 ]

        do

                i=`expr $i + $2`

                shift

        done

        echo $i

}


jian(){

        i=`expr 2 \* $2`

        while [ $# -gt 1 ]

        do

                i=`expr $i - $2`

                shift

        done

        echo $i

}



cheng(){

        i=1

        while [ $# -gt 1  ]

        do

                i=`expr $i \* $2`

                shift

        done

        echo $i

}


chu(){

        i=`expr $2 \* $2`

        while [ $# -gt 1 ]

        do

                i=`expr $i / $2`

                shift

        done

        echo $i

}

case $1 in

+)

        jia $*;;

-)

        jian $*;;

x)

        cheng $*;;

/)

        chu $*;;

*)

        echo "只能选择 | + | - | x | \ |"

esac


测试 sh js_four.sh + 12 13



#!/bin/bash

read -p "请输入你要选择运算的符号| + | - | x | / | " num

jia(){

        i=0

        while [ $# -gt 0 ]

        do

                i=`expr $i + $1`

                shift

        done

        echo $i

}


jian(){

        i=`expr 2 \* $1`

        while [ $# -gt 0 ]

        do

                i=`expr $i - $1`

                shift

        done

        echo $i

}



cheng(){

        i=1

        while [ $# -gt 0  ]

        do

                i=`expr $i \* $1`

                shift

        done

        echo $i

}


chu(){

        i=`expr $1 \* $1`

        while [ $# -gt 0 ]

        do

                i=`expr $i / $1`

                shift

        done

        echo $i

}

case $num in

+)

        jia $*;;

-)

        jian $*;;

x)

        cheng $*;;

/)

        chu $*;;

*)

        echo "只能选择 | + | - | x | \ |"

esac


测试 sh js_four.sh 12 13

     请输入你要选择运算的符号| + | - | x | / |  +   



3、求test.sh脚本中定义名为jc的函数,功能是计算用户任意数的阶乘

#!/bin/bash

shu(){

j=$1

i=1

if [ -z $j ] || [ $j -eq 0 ];then

        echo "0"

        exit

fi

while [ $j -gt 0 ]

do

        i=`expr $i \* $j`

        let j--

done

echo "$i"

}

shu $*



#!/bin/bash

jc(){

read -p "请输入你想要算的阶乘数" n

if [ -z $n ] || [ $n -eq 0 ] ;then

echo 0;exit

fi

j=1

for ((i=1;i<=$n;i++))

do

j=`expr $j \* $i`

done

echo $j

}

jc 




4、安装源码包的网站服务-rhel5.

能使用service apached start | stop | status 对源码网站服务器停止启动和查看状态



锁文件方法

#vi /etc/init.d./httpd


#!/bin/bash

# chkconfig:35 55 25

# description: secure apache server

# processname: httpd

start(){

        /usr/local/httpd/bin/apachectl start

        echo "启动 httpd:               [确定]"

        touch /usr/local/httpd/httpd.lock启动

}



stop(){

        /usr/local/httpd/bin/apachectl stop

        echo "停止httpd:                [确定]"

        rm -rf /usr/local/httpd/httpd.lock

}


status(){

        if [ -e /usr/local/httpd/httpd.lock ];then

                echo "httpd already 启动"

        else

                echo "httpd 已停"

        fi

}



case $1 in

start)

        start;;

stop)

        stop;;

status)

        status;;

*)

        echo "用法: /etc/init.d/httpd {start|stop|status}"

esac


#chmod +x /etc/init.d/httpd

#service httpd start

#chkconfig --add httpd;chkconfig --list httpd

     




#vi /etc/init.d./httpd


#!/bin/bash

# chkconfig: 2345 55 25

# description: source apache server

# processname: httpd

start(){

        /usr/local/httpd/bin/apachectl start

        echo "启动 httpd:               [确定]"

 



stop(){

        /usr/local/httpd/bin/apachectl stop

        echo "停止httpd:                [确定]"


}status(){

netstat -tulnp grep :httpd %> /dev/null

if [ $? -eq 0 ];then

echo "service in on"

else

echo "service is no on"

}


case $1 in

start)

        start;;

stop)

        stop;;

status)

        status;;

*)

        echo "用法: /etc/init.d/httpd {start|stopstatus}"

esac

#chmod +x /etc/init.d/httpd

#service httpd start

#chkconfig --add httpd;chkconfig --list httpd


5、arr.sh

把用户从健盘的输入的名字保存到数组stugrp里

并输出stugrp数组的元素的第2个元素的元素值


输出stugrp数组的所有元素


用户循环结构的方式输出stugrp数组的所有元素


方法1:

#!/bin/bash

stugrp=($*)

for ((i=0;i<`echo ${#stugrp[@]}`;i++))

do

echo ${stugrp[$i]}

done


方法2

#!/bin/bash

read -p "input name1" stugrp[0]

read -p "input name1" stugrp[1]

read -p "input name1" stugrp[2]

echo ${stugrp[1]}

i=0

while [ $i -le 2 ]

do


        echo ${stugrp[$i]}

        let i++

done



方法3

#!/bin/bash

read -p "请输入你的用户名:" name

read -p "请输入你的用户名:" name1

read -p "请输入你的用户名:" name2

stugrp=($name $name1 $name2)

echo ${stugrp[1]}

echo

i=0

while [ $i -le 2 ]

do


        echo ${stugrp[$i]}

        let i++

done


方法4

for i in `echo ${stugrp[@]}`

do

echo $i

done



6、用循环结构给stugrp数组赋值,(根据保存名字的个数给数组赋值)



#!/bin/bash

read -p "请输入你要输入的个数:"  sum

read -p "请输入你要输入的名字:"  name

while [ -z $sum ]

do

        echo "信息不能为空";exit

done

szgrp=($name)

i=0

if [ $sum -eq ${#szgrp[*]} ];then

        while [ $i -lt $sum ]

        do

                echo ${szgrp[$i]}

                let i++

        done

else

        echo "你输入的名字数目需要符合你输入的个数"

fi



#!/bin/bash

declare -i NUM

read -p "你要输入多少个名字?:"NUM

declare -a STUGRP

declare -i i=0

while [ $i -lt $NUM ]

do

declare -i ii=i+1

read -p "输入第$ii个名字:" STUGRP[$i]

let ++i

done


echo ---------------------------------------------


NUM=${STUGRP[*]}

for ((i=0;i<NUM;++i))

do

echo ${STUGRP[$i]}

done


7、mysql+cluster.sh (检查mysql集群中各服务器的物理联通性)


执行脚本的执行方式:

./mysql_cluster.sh 检查服务器的台数 服务器IP地址列表


例如:

./mysql_cluster.sh 3 1.1.1.1 1.1.1.2 1.1.1.3


能够更改用户输入检查服务器的台数和IP地址对应的检查

输入的IP地址个数要与检查服务器台数匹配

如果用户在执行脚本时,执行方式错误,提示用户脚本的正确执行方式.

把不在线的服务器IP地址和不在线时间保存到/clusterdir/notline.txt文件里

输入在线主机的ip地址和不在线主机的台数



8、slave_status.sh(检查mysql主从从结构中从数据库服务器的状态)

   1、本机的数据库服务是否正在运行

   2、能否与主数据库服务器正常通信

   3、能否使用授权用户连接数据库服务器

   4、本机的slave_IO进程是否处于YES状态

      本机的slave_SQL进程是否处于YES状态


#!/bin/bash

netstat -tulnp | grep :3306 > /dev/null

if [ $? -eq 0 ];then

        echo "服务正在运行" 

else

        service mysqld start

fi

ping -c 3 192.168.1.100 &> /dev/null

if [ $? -eq 0 ];then

        echo "网络连接正常" 

else

        echo "网络连接失败"

fi

mysql -h192.168.1.100 -uroot -p123456 &> /dev/null

if [ $? -eq 0 ];then

        echo "数据库连接成功" 

else

        echo "数据库连接失败"

fi

IO= mysql -uroot -p123 -e "show slave status\G" | grep Slave_IO_Running | awk ‘{print $2}‘ > /dev/null

SQL= mysql -uroot -p123 -e "show slave status\G"  | grep  Slave_SQL_Running | awk ‘{print $2}‘ /dev/null

if [ IO==Yes ] && [ SQL==Yes ];then

        echo “IO and SQL 连接成功”

else

        echo "IO线程和SQL线程连接失败"

fi




9、rename_file.sh(批量修改当前目录下的文件)

把.txt结尾的文件都修改为以.doc结尾

mv image.txt image-1.doc

   web.txt   web-2.doc

   test.txt  test-3.doc



#!/bin/bash

for i in `ls ??.sh`

do

        file=${i%.*}

        mv $file.sh $file.doc

done


本文出自 “wsyht的博客” 博客,请务必保留此出处http://wsyht2015.blog.51cto.com/9014030/1790413

day04脚本练习题

标签:day04脚本练习题

原文地址:http://wsyht2015.blog.51cto.com/9014030/1790413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!