加载中...
加载中...
一些简单的shell脚本实例

一些简单的shell脚本实例 原创

(1)用户猜数字 

#!/bin/bash

# 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
# 猜小了或猜大了,直至用户猜对脚本结束。

# RANDOM 为系统自带的系统变量,值为 032767的随机数
# 使用取余算法将随机数变为 1100 的随机数
num=$[RANDOM%100+1]
echo "$num"

# 使用 read 提示用户猜数字
# 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),
# ‐lt(小于),‐le(小于等于)
while :
do
read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
if [ $cai -eq $num ]
then
echo "恭喜,猜对了"
exit
elif [ $cai -gt $num ]
then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done

(2)查看有多少远程的 IP 在连接本机 

 
#!/bin/bash
# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计)

# 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,
# -t仅显示 tcp 连接的信息,‐n 数字格式显示
# Local Address(第四列是本机的 IP 和端口信息)
# Foreign Address(第五列是远程主机的 IP 和端口信息)
# 使用 awk 命令仅显示第 5 列数据,再显示第 1 列 IP 地址的信息
# sort 可以按数字大小排序,最后使用 uniq 将多余重复的删除,并统计重复的次数
netstat -atn | awk '{print $5}' | awk '{print $1}' | sort -nr | uniq -c

(3)helloworld 

#!/bin/bash
function example {
echo "Hello world!"
}
example

(4)打印 tomcat 的pid 

 #!/bin/sh`

 
v1="Hello"
v2="world"
v3=${v1}${v2}
echo $v3

pidlist=`ps -ef|grep apache-tomcat-7.0.75|grep -v "grep"|awk '{print $2}'`
echo $pidlist
echo "tomcat Id list :$pidlist" //显示pid

(5)脚本编写 剪刀 、 石头、布游戏 

#!/bin/bash
game=(石头 剪刀 布)
num=$[RANDOM%3]
computer=${game[$sum]}


echo "请根据下列提示选择您的出拳手势"
echo " 1. 石头"
echo " 2. 剪刀"
echo " 3. 布 "

read -p "请选择 1-3 :" person
case $person in
1)
if [ $num -eq 0 ]
then
echo "平局"
elif [ $num -eq 1 ]
then
echo "你赢"
else
echo "计算机赢"
fi;;
2)
if [ $num -eq 0 ]
then
echo "计算机赢"
elif [ $num -eq 1 ]
then
echo "平局"
else
echo "你赢"
fi;;
3)
if [ $num -eq 0 ]
then
echo "你赢"
elif [ $num -eq 1 ]
then
echo "计算机赢"
else
echo "平局"
fi;;
*)
echo "必须输入1-3 的数字"
esac

(6)九九乘法表 

 #!/bin/bash

for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$j*$i=$[i*j] "
done
echo
done

(8)检测本机当前用户是否为超级管理员 

#!/bin/bash
# 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
# 是,则提示您非管理员(使用字串对比版本)
if [ $USER == "root" ]
then
yum -y install vsftpd
else
echo "您不是管理员,没有权限安装软件"
fi

(9)if 运算表达式 

#!/bin/bash -xv

if [ $1 -eq 2 ] ;then
echo "wo ai wenmin"
elif [ $1 -eq 3 ] ;then
echo "wo ai wenxing "
elif [ $1 -eq 4 ] ;then
echo "wo de xin "
elif [ $1 -eq 5 ] ;then
echo "wo de ai "
fi

(11)脚本 杀掉 tomcat 进程并重新启动 

#!/bin/bash
#kill tomcat pid

pidlist=`ps -ef|grep apache-tomcat-7.0.75|grep -v "grep"|awk '{print $2}'` #找到tomcat的PID号

echo "tomcat Id list :$pidlist" //显示pid

kill -9 $pidlist #杀掉改进程

echo "KILL $pidlist:" //提示进程以及被杀掉

echo "service stop success"

echo "start tomcat"

cd /opt/apache-tomcat-7.0.75

pwd

rm -rf work/*

cd bin

./startup.sh #;tail -f ../logs/catalina.out

(21)脚本编写 for 循环判断 

#!/bin/bash
s=0;
for((i=1;i<100;i++))
do
s=$[$s+$i]
done

echo $s

r=0;
a=0;
b=0;
for((x=1;x<9;x++))
do
a=$[$a+$x]
echo $x
done
for((y=1;y<9;y++))
do
b=$[$b+$y]
echo $y

done

echo $r=$[$a+$b]

(22)脚本编写 for 循环判断  

 #!/bin/bash

for i in "$*"
do
echo "wenmin xihuan $i"
done

for j in "$@"
do
echo "wenmin xihuan $j"
done

(23)脚本  每周 5 使用 tar 命令备份/var/log 下的所有日志文件 

#!/bin/bash
# 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
# vim /root/logbak.sh
# 编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
# 注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面

tar -czf log-`date +%Y%m%d`.tar.gz /var/log

# crontab -e #编写计划任务,执行备份脚本
00 03 * * 5 /home/wenmin/datas/logbak.sh

(24)脚本编写 求和 函数运算 function xx() 

#!/bin/bash
function sum()
{
s=0;
s=$[$1+$2]
echo $s
}
read -p "input your parameter " p1
read -p "input your parameter " p2

sum $p1 $p2


function multi()
{
r=0;
r=$[$1/$2]
echo $r
}
read -p "input your parameter " x1
read -p "input your parameter " x2

multi $x1 $x2

v1=1
v2=2
let v3=$v1+$v2
echo $v3

(25)脚本编写  case  -- esac 分支结构表达式 

#!/bin/bash 
case $1 in
1)
echo "wenmin "
;;
2)
echo "wenxing "
;;
3)
echo "wemchang "
;;
4)
echo "yijun"
;;
5)
echo "sinian"
;;
6)
echo "sikeng"
;;
7)
echo "yanna"
;;
*)
echo "danlian"
;;
esac

(27)通过位置变量创建Linux 系统账户及密码 

 #!/bin/bash

# 通过位置变量创建Linux 系统账户及密码

# $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数

useradd "$1"
echo "$2" | passwd --stdin "$1"

(30)检查指定目录下是否存在 对应 文件 #!/bin/bash

if [ -f /home/wenmin/datas ]
then
echo "File exists"
fi

(31)脚本定义while循环语句 

#!/bin/bash
if [ -f /home/wenmin/datas ]
then
echo "File exists"
fi

[root@rich datas]# cat while.sh
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s + $i]
i=$[$i + 1]
done

echo $s
echo $i

(35)脚本实现文件存在与否的判断 

#!/bin/bash
if [ -f file.txt ];then
echo "文件存在"
else
echo "文件不存在"
fi


原文:https://blog.csdn.net/weixin_42405670/article/details/89818462

 

推荐一个markdown编辑器工具Typora是一款支持实时预览的Markdown文本编辑器。它有OSX、Windows、Linux三个平台的版本,并且由于仍在测试中,是完全免费的。ypora官网:&nbsp;ht
#Java基础##面向对象和面向过程的区别面向过程:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般
从1946年世界上第一台计算机诞生,直到今天计算机普及到千家万户,计算机的技术发展走过了70多个年头。今天,一名普通小学生就能够非常熟练的使用计算机。计算机的普及和平民化,离不开计算机操作系
没有更多推荐了 [去首页]
image
文章
376
原创
293
转载
83
翻译
0
访问量
183398
喜欢
73
粉丝
5
码龄
7年
资源
3

文章目录

加载中...
0
0