shell脚本大全(一)

x33g5p2x  于2021-12-16 转载在 Shell  
字(2.7k)|赞(0)|评价(0)|浏览(732)

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

#首先创建一个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

相关文章