SHELL简单脚本编写

vim /root/7.sh

#!/bin/bash

X=$[RANDOM%10+1]

read -p "[1-10]你猜:" cai

if [ $cai -eq $X ];then

echo 恭喜你猜对了

exit

elif [ $num -gt $X ];then

echo 猜大了

else

echo 太小了

fi

vim /root/6.sh

#!/bin/bash

read -p "请输入一个软件包:" b

b=$(rpm -qa | grep "$a")

if [[ -z $b ]];then

echo "没有安装"

else

echo "已经安装"

fi

vim /root/5.sh

#!/bin/bash

netstat -anptu | grep httpd &> /dev/null

if [ $? -eq 0 ];then

echo "已经启动"

else

echo "没有启动"

fi

vim /root/4.sh

#!/bin/bash

ping -c3 -i0.2 -w1 $1 &> /dev/null

if [ $? -eq 0 ];then

echo "host $1 up"

else

echo "host $1 down"

fi

vim /root/3.sh

#!/bin/bash

[ -d /mnt ] || mkdir /mnt

mount /dev/cdrom /mnt

vim /root/2.sh

#!/bin/bash

[ ! -d /mnt ] && mkdir /mnt

mount /dev/cdrom /mnt

vim /root/1.sh

#!/bin/bash

num=$(who | wc -l)

[ $num -gt 10 ] && mail -s errot root < mail.txt

crontab -e

*  *  *  *  * /root/1.sh

vim /mail.txt

隔壁老王来了

ping 176.130.8.50-150,开启的有多少个,没有开启的有多少个

#!/bin/bash

x=0

y=0

for i in {100..150}

do

ping -c2 -i0.1 -W1 176.130.8.$i &> /dev/null

if [ $? -eq 0 ];then

echo "176.130.8.$i is up"

let x++

else

echo "176.130.8.$i is down"

let y++

fi

done

echo  "开机的有$x个, 关机的有$y个"

求1+2+3+4+5......100的和

#!/bin/bash

sum=0

for i in {1..100}

do

let sum+=i

done

echo "总和$sum"

求1*2*3*4......30的积

#!/bin/bash

sum=1

for i in {1..50}

do

let sum\*=i

done

echo "总共是 $sum"

将/var/log每个文件,单独打包,保存到/tmp中

for i in `ls /var/log`

do

tar -czf /tmp/$i.tar.gz /var/log/$i

done

----------辅助理解/var/log/文件理解的打包过程

for i in a.txt b.txt c.txt d.txt

do

i=a.txt

tar -czf /tmp/$i.tar.gz /var/log/$i

done

利用Shell脚本,猜一个随机数

#!/bin/bash

y=0

num=$[RANDOM%100+1]

while :

do

read -p "[1-100] , 你猜一个数:" cai

let y++

if [ $cai -eq $num ];then

echo "恭喜猜对了, 你猜了$y次"

exit

elif [ $cai -gt $num ];then

echo "猜大了"

else

echo "猜小了"

fi

done

case语句

如果参数是redhat,则显示是fedora

如过参数是fedora,则显示是redhat

如果参数是其他,则显示是Useage

#!/bin/bash

case "$1" in

redhat)

echo "fedora";;

fedora)

echo "redhat";;

*)

echo "Usage";;

esac

case语句(判断语句),简化if语句-----------只能进行两个值之间是否相等

#!/bin/bash

case "$1" in

-n)

touch $2;;

-e)

vim $2;;

-c)

cat $2;;

-r)

rm -rf $2;;

*)

echo "Usage:$0 (-n|-e|-c|-r|)" 文件名

esac

Shell调用函数----------就是给一段命令取个别名(函数)

基本格式:函数名 (){

大括号中间跟命令

}

调用函数:函数名

ll(ls -l)

#!/bin/bash

cecho (){

echo -e "\033[$1m$2\033[0m"

}

cecho  32 OK

cecho  34 Error

cecho  35 Waring

3X:是字体颜色

4X:是背景颜色

X:表示样式

While语句

固定格式:while

i=1

while [ $i -lt 10 ]

do

echo "你好"

let i++

done

break,contine,exit给脚本的间接中断在重复使用

(1)break中断整个循环体

(2)continue中断本次循环,立即跳入下一次循环

(3)exit中断整个脚本

#!/bin/bash

for i in {1..5}

do

[ $i -eq 3 ] && break

echo $i

done

echo OK

#!/bin/bash

for i in {1..5}

do

[ $i -eq 3 ] && continue

echo $i

done

echo OK

#!/bin/bash

for i in {1..5}

do

[ $i -eq 3 ] && exit

echo $i

done

echo OK

#!/bin/bash

sum=0

while :

do

read -p "请输入数字[0结束]:" xx

[ $xx -eq 0 ] && break

let  sum+=xx

done

echo "总和是$sum"

打印9*9乘法表

#!/bin/bash

for i in `seq 9`

do

for x in `seq $i`

do

echo -n "$i*$x=$[$i*$x]"

done

echo

done

猴子摘香蕉

#!/bin/bash

x=1

for i in {1..8}

do

let x=x+1

let x=x*2

done

echo $x

国际象棋

#!/bin/bash

b=1

while [ $b -le 4 ]

do

for i in {1..4}

do

echo -en "\033[40m  \033[0m"

echo -en "\033[47m  \033[0m"

done

echo

for i in {1..4}

do

echo -en "\033[47m  \033[0m"

echo -en "\033[40m  \033[0m"

done

echo

if [ $b -eq 2 ];then

echo -e "\033[47m  楚河汉界   \033[0m"

fi

let b++

done

#!/bin/bash

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

read -p "请输入用户密码:" pass

if [ -z "$name" ];then

echo "必须输入用户名"

exit

fi

pass=${pass:-123456}

useradd $name

echo "$pass" | passwd --stdin $name

提示用户输入一个数:如果输入的是10,则脚本1+2+3+4.....10

如果输入的是20,则脚本1+2+3....+20

如过没有输入,则脚本1+2+3+4......+100

#!/bin/bash

read -p "请输入一个数字:" xx

xx=${xx:-100}

sum=0

for i in `seq $xx`

do

let sum+=i

done

echo "总和是$sum"

创建文件touch {a,b,c,d}.txt,把 .txt后缀改为 .doc

#!/bin/bash

for i in `ls *.txt`

do

mv $i ${i%.txt}.txt

done

改变参数,赋予变量

#!/bin/bash

for i in `ls *.$1`

do

mv $i ${i%.$1}.$2

done

#!/bin/bash

sum=0

for i in `seq 2 2 100`

do

let sum=sum+i

done

echo "$sum"

sum=0

for i in `seq 1 2 99`

do

let sum+=i

done

echo "总和是$sum"

#tmp=0

read -p "shu zi" num

num=${num:-100}

for i in `seq 2 2 $num`

do

let tmp+=i

done

echo $tmp

#!/bin/bash

case $1 in

start)

if [ -f /usr/local/nginx/logs/nginx.pid ];then

echo "正在运行"

else

/usr/local/nginx/sbin/nginx

echo "启动成功"

fi;;

stop)

if [ ! -f /usr/local/nginx/logs/nginx.pid ];then

echo "已经关闭"

else

/usr/local/nginx/sbin/nginx -s stop

echo "关闭成功"

fi;;

restart)

if [ -f /usr/local/nginx/logs/nginx.pid ];then

/usr/local/nginx/sbin/nginx -s stop

/usr/local/nginx/sbin/nginx

echo "重启成功"

else

/usr/local/nginx/sbin/nginx

echo "重启成功"

fi;;

status)

if [ -f /usr/local/nginx/logs/nginx.pid ];then

netstat -ntulp |grep nginx

else

echo "没有运行"

fi;;

*)

echo "Error";;

esac

时间: 2024-11-08 03:30:07

SHELL简单脚本编写的相关文章

Day10.awk命令以及shell的脚本编写

作业一:awk.变量的整理 awk语法:-F 定义字段分隔符,默认的分隔符是连续的空格或制表符用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域NF变量表示当前记录的字段数NR变量表示AWK读入的行数-v 定义变量并赋值 也可以借用次方式从shell变量中引入 变量:1.系统变量set:显示所有变量env:环境变量2.赋值变量VARNAME=VALUEecho $VARNAME删除变量 unset VARNAME3.常用系统变量 PATH.PWD.LANG.HOME.HIS

SHELL 简单脚本 更新中

1.服务器需要每周17:30清理FTP服务器的公共共享目录,先检查/var/ftp/pub/目录,将其中所有子目录及文件的详细列表.当前时间信息追加保存到/var/log/pubdir.log日志文件中,然后清空该目录. 添加计划任务,实现每周五计划执行脚本 2.数据库服务器需要每隔3天对数据库目录做一次备份,统计/var/lib/mysql 目录占用的空间大小.查看当前日期,并记录到临时文件夹/tmp/dbinfo.txt 中:将/tmp/dbinfo.txt文件./var/lib/mysql

shell 简单脚本编程

shell脚本编程 编译器,解释器 编程语言: 机器语言,汇编语言,高级语言 静态语言:编译型语言 强类型(变量) 事先转换成可执行格式 C,C++,JAVA,C# 动态语言:解释型语言,on the fly 弱类型 边解释边执行 ASP,ASP.NET,PHP,SHELL,PYTHON,PERL shell: 弱类型编程语言强类型: 变量在使用前,必须事先声明,甚至需要初始化弱类型: 变量用时声明,甚至不区分类型 bash变量类型: 环境变量:作用域为当前shell进程及其子进程 export

一些shell简单脚本

(1)批量解析域名 把域名保存在dns.txt文件, ping 一次 ping -c1 打印第二行 sed -n '2p' 打印ip那个字段 第4段 awk '{print $4}' 删除掉末尾的:号,删除最后一个字符,用sed 替换为空  sed 's/.$//' for i in `cat dns.txt`; do ping -c 1 $i|sed -n '2p'|awk '{print $4}'|sed 's/.$//'; done;

编写SHELL脚本--编写简单脚本

1.简单脚本文件hello.sh,内容如下 #!/bin/bash pwd ls -al 执行脚本:bash hello.sh  或者使用root命令:  ./hello.sh 2.接受用户参数 $0代表执行的脚本文件名称 $*代表所有的用户参数 $?代表上个命令执行后的返回值 $#代表总共多少个参数 $n 代表第几个参数的值, n代表第几个参数, 执行:bash   params.sh

shell脚本编写nginx部署脚本

下面为shell脚本编写的nginx的安装及修改nginx.conf的脚本,脚本比较简单: #!/bin/bash function yum_install(){ yum install epel-release -y yum install nginx -y} yum_install pw=/etc/nginx/nginx.confread -p "请输入组名:" zuread -p "请输入第一个ip地址:" ip1read -p "请输入第二个ip地

shell 脚本编写基础

在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行命令开头处不用就空格也行.. 第1部分. linux 脚本编写基础 1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执

shell编程之服务脚本编写,文件锁以及信号捕获

shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以我们直接切入正题. 开班第20天: 今天的课程大纲: shell编程中的函数 编写一个自动挂载的脚本 利用autofs怎么实现自动挂载 文件锁和信号捕获trap sed流文件编辑器 详细讲解: shell编程中的函数 shell中,我们定义函数的方法有两种: 下面调用的时候,直接调用函数名就可以了

(转)shell实现多级菜单脚本编写

shell实现多级菜单脚本编写 原文:https://www.yuanmas.com/info/2gOwBPvqyb.html 这篇文章主要介绍了Shell实现多级菜单系统安装脚本实例分享,本文脚本用多级菜单实现LAMP.LNMP安装展现效果,需要的朋友可以参考下: 提示:本脚本主要实现多级菜单效果,并没有安装LAMP.LNMP环境,如果要用在实际生成环境中部署LNMP.LAMP环境,只需要简单修改一下就可以了. 演示效果: 1.一级菜单 2.二级菜单 3.执行操作 脚本参考: 代码如下: #!