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

时间: 2024-10-23 12:43:23

day04脚本练习题的相关文章

shell脚本练习题(更新中...)

练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: 1 #!/bin/bash 2 #caculate the sum of numbers from 1 to 100 3 4 sum=0 5 for i in `seq 1 100`; do 6 sum=$[$sum+$i] 7 done 8 echo $sum 2. 编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到

shell脚本练习题

求出数字1~100的累加和: 要求数字的累加,可以使用循环来完成,如下代码: #!/bin/bash sum=0 str="" #for i in {1..100} for ((i=1 ; i<=100 ; ++i)) do     str+="${i}+"     let sum+=i done echo "${str%+}=${sum}" 运行脚本: 另外一种可以用递归的方式: #!/bin/bash read num  sum=0 s

shell编程脚本练习题

1.使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为: [[email protected] oldboy]# sh /server/scripts/oldboy.sh [[email protected] oldboy]# ls coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html gmkhrancxh_oldboy.html  tmd

day01脚本练习题

1.管理员用户登陆系统时,可以使用如下方式,开启并闭系统服务 服务名 start|restart|stop|status sshd start 答案: #tail /etc/bashrc export PATH=/etc/init.d:$PATH #source /etc/bashrc 2.每周日晚上23:30对数据库服务器webdb数据库做完整备份,把备份文件保存到/mysqlbak文件里,用系统日期做备份文件名 答案: #crontab -e 30 23 * * 7 /usr/bin/mys

day02脚本练习题

一.four.sh输出用户从健盘输入的任意2个数的四则运算结果 如果用户有一个数值没有输入,就终止脚本 #!/bin/bash read -p "请输入第一个数:"  num1 read -p "请输入第二个数:"  num2 [ -z $num1 ] && exit [ -z $num2 ] && exit sum=`expr $num1 + $num2` jian=`expr $num1 - $num2` cheng=`expr

day03脚本练习题

1.用while循环输出数字1到10(降序输出) 用while循环输出数字35到50(升序输出) #!/bin/bash j=10 i=35 while [ $j -ge 1 ] do echo$j let j-- done while [  50 -ge $i ] do echo$i let i++ done 2.批量添加15个系统用户要求如下 用户名的密码与用户名相同 用户名的前辍是user,用户名格式如下 user01 user02 ... user09 user10 ... user15

脚本练习题

脚本练习 达到的效果  ./output.sh   5  file.txt  输出指定文件第5行 ./output  5-10  file.txt 输出指定文件第5-10行 #!/bin/bash ###read the argument to output the file content. if [ -n $1 ] && ! [[ $1 =~ [a-zA-Z] ]] && [ -f $2 ];then              #判断行的参数是否存在且为数字,打开的文件

Linux学习—脚本练习题

shell脚本练习 1.编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #!/bin/bash #编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #************************************************************************************************

Shell学习之路和我发布过的Shell脚本博文

Shell学习之路 目录 Shell学习之路[第一篇]:别名,管道,用户配置文件,变量,read Shell学习之路[第二篇]:条件测试,运算符,选择结构,for循环结构 Shell学习之路[第三篇]:While循环,C-for循环,Until循环,case分支结构,流程控制语句 Shell学习之路[第四篇]:函数,数组,变量替换 Shell学习之路[第五篇]:多线程脚本 Shell学习之路[第六篇]:Trap信号捕捉命令介绍与Shell结合实战讲解 Shell学习之路[第七篇]:Linux下d