1、通过位置变量创建linux系统账户及密码

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

#!/bin/bash

#创建用户与密码

declare -i c=0

if [ -z $1 ] || [ -z $2 ];then

echo "请输入用户名和密码!"

fi

for i in $(cat /etc/passwd|cut -d: -f1);do

if [ $1 == $i ];then

let c=1

fi

done

if [ $c -ne 1 ];then

useradd $1

`echo $2|passwd $1 --stdin &>/dev/null`

if [ $? -eq 0 ];then

echo "添加成功"

fi

else

echo "此用户已存在"

fi

2、每周5使用tar命令备份/var/log 下的所有日志文件,防止文件覆盖

#!/bin/bash

#每周五备份/var/log下的所有日志文件

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

[root@sv7 ~]# crontab -e

0 3 5 /root/tar.sh

3、

脚本生成一个 100 以内的随机数值,提示用户猜数字,更具用户的输入,提示用户猜对了,猜打了或猜小了,直至用户猜对脚本结束。

#!/bin/bash

num=$(($RANDOM%100+1))

c=0

while [ $c -lt 5 ]

do

read -p "输入你猜的数>>" mynum

if [ $mynum -eq $num ];then

echo "你猜对了!!"

break

elif [ $mynum -gt $num ];then

echo "你猜大了!!请继续!!"

elif [ $mynum -lt $num ];then

echo "你猜小了!!请继续!!"

fi

c=$(($c+1))

done

if [ $c -eq 5 ];then

echo "随机数为$num"

fi

4、依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

#!/bin/bash

read -p "请输入第一个数>>" a

read -p "请输入第二个数>>" b

read -p "请输入第三个数>>" c

if [ $a -gt $b ];then

if [ $b -gt $c ];then

echo "$a>$b>$c"

elif [ $b -lt $c ];then

if [ $a -gt $c ];then

echo "$a>$c>$b"

elif [ $a -lt $c ];then

echo "$c>$a>$b"

fi

fi

elif [ $a -lt $b ];then

if [ $b -gt $c ];then

if [ $a -gt $c ];then

echo "$b>$a>$c"

elif [$a -lt $c ];then

echo "$b>$c>$a"

fi

elif [ $b -lt $c ];then

echo "$c>$b>$a"

fi

fi

5、编写脚本,实现人机《石头,剪刀,布》游戏

#!/bin/bash

j=1

while [ $j -le 5 ]

do

echo "1.石头 2.剪刀 3.布 "

read -p "请出拳1-3:" i

if [ $i -ne 1 -o $i -ne 2 -o $i -ne 3 ];then

echo "请输入1-3之间的数"

fi

game=(石头 剪刀 布)

num=$((RANDOM%3))

echo computer=${game[$num]}

case $i in

1)

if [ 0 -eq $num ];then

echo "平局"

elif [ 1 -eq $num ];then

echo "你输了"

else

echo "你赢了"

fi;;

2)

if [ 1 -eq $num ];then

echo "平局"

elif [ 0 -eq $num ];then

echo "你输了"

else

echo "你赢了"

fi;;

3)

if [ 2 -eq $num ];then

echo "平局"

elif [ 1 -eq $num ];then

echo "你输了"

else

echo "你赢了"

fi;;

esac

let j++

done

6、编写脚本测试192.168.4.0/24整个网段中那些主机处于开机状态,那些主机处于关机状态(for 版本)

#!/bin/bash

declare -i sum=0

declare -i nsum=0

for i in $(seq 1 254);do

ping -c 1 -w 1 10.6.12.$i &> /dev/null

if [ $? -eq 0 ];then

let sum++

echo "10.6.12.$i 开机 "

else

let nsum++

echo "10.6.12.$i 关机"

fi

done

echo "总共有$sum 台电脑开机!"

echo "总共有$nsum 台电脑关机!"

7、9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)

#!/bin/bash

for i in {1..9};do

for j in $(seq $i);do

echo -ne "$i*$j=$((i*j)) "

done

echo ''

done

8、使用死循环实时显示 eth0 网卡发送的数据包流量

#!/bin/bash

while :

do

echo “本地网卡 eth0 流量信息如下:”

ifconfig eth0 | grep "RX pack" | awk ‘{print $5}‘

ifconfig eth0 | grep "TX pack" | awk ‘{print $5}‘

sleep 1

done

9、使用user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户信息

#!/bin/bash

c=`wc -l user.txt|cut -d' ' -f1`

for i in $(seq $c);do

username=`head -$i user.txt|tail -1 |cut -f1`

passwd=`head -$i user.txt|tail -1 |cut -f2`

c=0

for j in $(cat /etc/passwd|cut -d: -f1);do

if [ $username == $j ];then

echo "$username 已经存在无法添加"

c=1

fi

done

if [ $c -eq 0 ];then

`useradd $username &>/dev/null`

`echo $passwd|passwd $username --stdin &>/dev/null`

echo "添加成功"

fi

done

10、编写批量修改扩展名脚本,如批量将 txt 文件修改为doc文件

执行脚本时,需要给脚本添加位置参数

脚本名 txt doc (可以将 txt 的扩展名修改为doc)

脚本名 doc jpg(可以将doc 的扩展名修改为jpg)

#!/bin/bash

# Author: Sean Martin

# Blog: https://www.cnblogs.com/shy13138/

# Time: 2019-08-16 10:24:42

# Name: houzhui.sh

# Version: v1.0

read -p "输入旧的后缀名:" a

read -p "输入新的后缀名:" b

read -p "输入文件夹:" d

cd $d

for i in $(ls $d | grep .$a)

do

name=$(ls $i | cut -d. -f1)

mv $i ${name}.$b

echo "$name.$a ====> $name.$b"

done

echo "修改完毕"

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

使用 netstat -atn 可以查看本机所有连接状态,-a 查看所有,-t 仅显示tcp连接信息, -n数字格式显示local address(第四列是本机的IP和端口信息)Foreign address(第五烈是远程主机的IP和端口信息)使用awk命令仅显示第5列数据,再显示第1列IP地址的信息

sort 可以按数字的大小排序,最后使用 Uniq 将多余重复的删除,并统计重复次数

#!/bin/bash

# Author: Sean Martin

# Blog: https://www.cnblogs.com/shy13138/

# Time: 2019-08-16 10:32:19

# Name: netstat1.sh

# Version: v1.0

declare -i L=0

declare -i E=0

declare -i O=0

for i in $(netstat -tna|grep "^tcp"|awk '{print $6}');do

if [ $i = "LISTEN" ];then

let L++

elif [ $i = "ESTABLISHED" ];then

let E++

else

let O++

fi

done

echo "监听链接有$L 个,建立的链接有$E 个,其他链接有$O"

12、对100 以内的所有正整数相加求和(1+2+3.。。+100)

eq 100 可以快速自动生成100个整数

#!/bin/bash

# Author: Sean Martin

# Blog: https://www.cnblogs.com/shy13138/

# Time: 2019-08-18 06:26:33

# Name: 1-100.sh

# Version: v1.0

declare -l sum=0

for i in $(seq 0 2 100);do

let sum=$sum+$i

done

echo $sum

shell脚本——作业二(循环作业)的更多相关文章

  1. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  2. shell脚本之for循环

    shell脚本之for循环 author :headsen  chen       2017-10-18    09:50:41 个人原创,转载请注明.否则依法追究法律责任 1,cat forloop ...

  3. shell脚本(二)

              shell脚本(二)——变量 一.定义:用来存放各种数据,编程语言组成部分 变量的命名规则: 变量名由数字 字母下划线组成 必须以字母或者下划线开头 不能使用shell里面的关键词 ...

  4. shell 脚本中所有循环语法

    写出 shell 脚本中所有循环语法 for 循环 : for i in $(ls);do echo item:$i done while 循环 : #!/bin/bash COUNTER=0 whi ...

  5. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  6. shell脚本中select循环语句用法

    shell脚本中select循环语句 1. 脚本中select的语法格式 select VAR in LIST do command1 command2 ... ... commandN done s ...

  7. shell脚本进阶之循环判断

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  8. Shell脚本之二 变量、字符串和数组

    一.Shell 变量 1.1 定义变量 定义变量时,变量名不加美元符号($),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...

  9. shell脚本学习(二)

    shell传递参数 shell脚本在执行是可以传递参数,脚本内获取参数的格式为:$n,n为一个数字,1为第一个参数,2为第二个参数,以此类推 其中,$0代表了要执行的文件名 实例: 代码如下: #!/ ...

  10. shell脚本程序中循环、判断语句的介绍

    shell的循环主要有3种,for,while,until shell的分支判断主要有2种,if,case 一,for循环 C/C++ Code复制内容到剪贴板 #!/bin/bash for fil ...

随机推荐

  1. HDFS的NameNode与SecondaryNameNode的工作原理

    原文:https://blog.51cto.com/xpleaf/2147375 看完之后确实对nameNode的工作更加清晰一些 在Hadoop中,有一些命名不好的模块,Secondary Name ...

  2. vue-cli3项目运行时一直发http://localhost:8080/sockjs-node/info?t=1462183700002请求

    报错如下图: 解决方式: 一.如果是在开发环境,应该是开发的时候网络环境变更导致,比如你切换无线网络,导致开发服务器的IP地址换了,这样开发服务器会不知道如何确定访问源.开发环境中关闭npm dev ...

  3. 重写equals方法需要知道的事

    重写equals方法 相信在每个人都有过重写过java的equals的方法的经历.这篇博文就从以下几个方面说明重写equals方法的原由,与君共进步. 一 为什么要重写equals方法 首先我们了解e ...

  4. vue实现文件上传

    <!-- multiple多个文件上传 accept文件类型--> <input type="file" @change="addFile" ...

  5. HDU 6470 【矩阵快速幂】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 写这道题是为了让自己不要忘记矩阵快速幂如何推出矩阵式子的. 注意 代码是TLE的!! #incl ...

  6. js中函数总结(1)

    8.1函数定义js的函数可以嵌套在其他函数的定义中,这样它们就可以访问它们被定义时所处的作用域中的任何变量.意味着js函数构成了一个闭包:function name(){} 特殊的:函数表达式有时定义 ...

  7. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest (西安邀请赛重现) J. And And And

    链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只 ...

  8. [bzoj3060][Poi2012]Tour de Byteotia_并查集

    [Poi2012]Tour de Byteotia 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3060 题解: 这类题有一个套路,就是 ...

  9. 为什么fastjson字段为null时不输出空字符串?

    为什么fastjson字段为null时不输出空字符串? Map < String , Object > jsonMap = new HashMap< String , Object& ...

  10. icell更改用户管理员

    管理员页面是http://127.0.0.1:8080/PORTAL/tsysLoginController/admin超级管理员是http://127.0.0.1:8080/PORTAL/tsysL ...