shell脚本大全(一)

6 篇文章 0 订阅

一、根据执行命令时输入的文件地址,打印文件下的所有目录

#首先创建一个sh文件:
touch sh02.sh

#授予执行权限:

 chmod +x sh02.sh

编辑sh02文件:

#vim sh02.sh

1、使用ls打印目录

#根据用户输入的目录遍历此目录下的所有文件
ls -l $1

#执行1

./sh02.sh /

#执行2

./sh02.sh /etc

2、tree

#根据用户输入的目录遍历此目录下的所有文件

tree $1

#执行1

./sh02.sh /

#执行2

./sh02.sh /etc

二、备份文件

tar -czvpf log.tar.gz $1

#执行

./sh02.sh /yhj/

三、定时执行

1、实例

echo '11111'

#编写计划任务,执行备份脚本
crontab -e
#每分钟执行,执行成功保存到log.log文件中,失败保存到error.txt
 * * * * * sh /yhj/sh/sh02.sh >>/yhj/sh/log.log  2>>/yhj/sh/error.txt

#查看计划任务

crontab -l

四、内存和空间检测脚本

#提取根分区剩余空间
disk_size=$(df / | awk '/\//{print $4}')

#提取内存剩余空间
mem_size=$(free | awk '/Mem/{print $4}')

if [ $disk_size -gt 1200 ]
then
   echo "空间正常:$disk_size"
else
   echo "空间警告:$disk_size"
fi

if [ $mem_size -gt 12000000000000000 ]
then
        echo "内存正常:$mem_size"
else
        echo "内存警告:$mem_size"
fi

五、猜数字游戏

# RANDOM 为系统自带的系统变量,可以生成 0‐32767范围内的随机数
# 使用取余算法将随机数变为 1‐100 的随机数
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 "猜大了小点行不行"
      	else
           	echo "猜小了慷慨点好不好"
 	fi
done

六、用户身份判断

if [ $USER == 'root' ]
then
        echo "是超级管理员root用户"
else
        echo "不是超级管理员,用户是$USER"
fi

七、添加用户

#如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

read -p "请输入用户名: " user
#使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本退出码为 2
#没有输入用户名脚本退出后,使用$?查看的返回码为 2
if [ -z $user ];then
        echo "您不需输入账户名"
        exit 2
fi
#使用 stty ‐echo 关闭 shell 的回显功能
#使用 stty  echo 打开 shell 的回显功能
stty -echo
read -p "请输入密码: " pass
stty echo
pass=${pass:123456}
useradd "$user"
echo "$pass" | passwd ‐‐stdin "$user"

八、输入三个数并进行升序排序

read -p "数字1:" num1
read -p "数字2:" num2
read -p "数字3:" num3

# num1 存最小的值,num2 存中间值,num3 存最大值
z=0
# 如果 num1 大于 num2,就把 num1 和 num2 的值对调,确保 num1 变量中存的是最小值
if [ $num1 -gt $num2 ];then   
	z=$num1
	num1=$num2
	num2=$z
fi
# 如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值
if [ $num1 -gt $num3 ];then   
  	z=$num1
  	num1=$num3
  	num3=$z
fi
# 如果 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值
if [ $num2 -gt $num3 ];then
  	z=$num2
  	num2=$num3
  	num3=$z
fi
echo "排序后数据(从小到大)为:$num1,$num2,$num3"

九、石头剪刀布


game=(石头 剪刀 布)
num=$[RANDOM%3]
computer=${game[$num]}

# 出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能
 
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

十、九九乘法表


# 9*9 乘法表
for i in `seq 9`
do
  	for j in `seq $i`
   	do
       	echo -n "$j*$i=$[i*j]  "
   	done
    echo
done
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
  在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户ID、组ID、用户全名、用户主目录和用户登录所用的shell。请设计一个脚本shell)程序能实现增加、删除、查找和显示特定用户信息的功能。你们可以通过创建一些UNIX/LINUX shell 脚本文件来满足以上需求。   可以用任意一个文本编辑器打开passwd文件,该文件里包含用冒号分隔开的字段组成的记录,如下所示:   root:x:0:0:root:/root:/bin/bash   zxj:x:500:500:zxj303:/home/zxj:/bin/bash    . .   在主Shell脚本文件里(必须以 menu 命名)要有一个多操作选项的菜单以便用户从中选择。在不同任务的中,这些操作能自动实现以下功能: 在屏幕上显示当前所有用户的记录 在屏幕上显示当前所有用户(经过格式化和排序的)的记录 只在屏幕上显示用户名和用户ID 只在屏幕上显示(经过格式化和排序的)用户名和用户ID 查询并显示特定用户的记录 往passwd文件里增加新的用户记录 从passwd文件里删除某个用户记录   你可以使用UNIX/LINUX中一些比较简单的命令或命令组合来执行1、2、3、4、5的任务。对于任务6和7,你需要编写单独的Shell脚本文件(必须分别命名为add和delete)并且在你的主脚本menu文件中调用这些脚本文件。   可能你还需要查询一些Unix/Linux命令,比如awk,、sort、tr、cut、paste、sed、grep;你也可能还需要查询其他的Unix/Linux命令。   建议你在主目录下建立一个以 xx xx xx(xx xx xx为学号)命名的目录,并且在本次作业中使用它作为工作目录。 主脚本文件中的菜单   在menu脚本文件里将创建如下菜单,菜单里包含供用户选择的一些操作。 用户信息主菜单 打印当前所有记录 打印当前所有记录(格式化后的) 打印用户名和用户ID 打印(格式化了的)用户名和用户ID 查询特定记录 增加新记录 删除记录 Q——退出 你的选择是:(等待用户输入)   当用户做了选择且所选的操作完成之后,应再次显示主菜单以供用户做下一步选择。你必须用while循环和case条件语句配合来完成此操作。另外在显示主菜单前必须先清除用户屏幕。在以下所有步骤中,当显示主菜单前都需要先清屏。   在menu脚本文件的前面部分你首先要定义三个变量,这三个变量分别存放passwd、add、delete文件的文件名,并且能在所有涉及到passwd、add、delete文件的语句中使用他们。 比如,可以定义成:           record_file=passwd   在所有访问passwd文件的语句中,只要使用 $record_file 即可。这样做的一个优点就是,如果以后你需要重新命名记录或者需要在不同的记录文件中使用你的脚本的话,你只需要修改以上一个语句而不须在所有有关的记录文件里逐一修改语句。如下定义另外两个变量:   add_file=add   delete_file=delete   定义以上变量之后,你必须核对menu脚本文件,看看所需的文件(passwd、add、delete)是否准确存放在当前目录下。如果其中任何一个不存在,你的脚本menu文件就必须显示以下信息,然后退出:   Required file theMissingFile does not exist.(所需文件不存在)   比如,如果passwd文件不存在,就显示“Required file passwd does not exist.(所需文件记录不存在)”然后退出。   在以上等待用户做出选择的菜单中,如果用户偶尔输入了一个代码而不是1、2、3、4、5、6、7或Q,就有信息提示“无效的代码,请按回车键继续``````”(务必保证光标停留在此信息行末尾而不是在下一行的开始处)。等用户按了回车键之后,再次显示主菜单供用户做其他选择。可以允许用户使用Q或q退出。   在以上等待用户做出选择的菜单中,如果用户简单地按了回车键(而不是输代码)的话,就会出现信息“Selection not entered. Press Enter to continue…"(务必保证光标停留在此信息行末尾而不是在下一行的开始处)。等用户按了回车键之后,再次显示主菜单供用户做其他选择。   当用户选择了第一项——打印当前所有用户记录   以下是当用户在主菜单中选择第一个选项后,menu脚本文件输出的内容的例子:    (此处是主菜单—略) 你的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原克技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值