Linux——基础脚本【shell--if,for,while,function,n案例】

这篇博客介绍了Shell脚本的基础知识,包括if多分支判断、for和while循环的使用,以及case语句、函数和read命令实现用户交互。还展示了几个实际应用案例,如两数相加、文件备份和用户聊天脚本,帮助读者掌握Shell脚本编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、if 多分支判断

#!/bim/basj

if [ "$1" = "aaa" ];then echo "$1"
fi

# 输入第二个参数,表示年龄,判断属于哪一个年龄段:
if [ "$2" -lt 18 ]
then
    echo "young"
elif [ $2 -lt 35 ]
then
    echo "common"
else 
    echo "old"
fi

2、for循环

#!/bin/bash

sum=0

#-----从1加到100
for (( i=0;i<=100;i++ ))
do
    sum=$[$sum+$i]
done
echo $sum

3、while循环

#!/bin/bash

a=1

while [ $a -le $1 ]
do
#	sum2=$[ $sum2 + $a ]
#	a=$[$a + 1]
	let sum2+=a
	let a++
done
echo $sum2

4、case语句 【switch】

#!/bin/bash

case $1 in
1)
	echo "one"
;;
2)
	echo "tow"
;;
3)
	echo "three"
;;
*)
	echo "default"
esac 

5、function函数

#!/bin/bash

function funname()
{
	let c=$a+$b
	echo $c
}

read -p "请输入第一个整数:" a
read -p "请输入第二个整数:" b

sum=$(funname $a $b)

echo "和:"$sum
echo "和的平方:"$[$sum * $sum]

6、read读取【input】

#!/bin/bash

read -t 10 -p "请输入你的名字:" name
echo "welcom, $name"

  7、案例1:两数相加

#!/bin/bash

a=$[$1+$2]

echo $a

8、案例2:文件备份

命令格式: ./backup.sh [文件路径]

例: 这是备份root目录下的所有文件

所以命令格式是: ./backup.sh ./root

#!/bin/bash

# --首先判断输入参数个数是否为1
if [ $# -ne 1 ]
then 
	echo "参数个数错误!应输入一个参数,作为归档目录名"
	exit
fi

# --从参数中获取目录名称
if [ -d $1 ]
then 
	echo
else
	echo
	echo "目录不存在"
	echo
	exit
fi

DIR_NAME=$(basename $1)
DIR_PATH=$(cd $(dirname $1); pwd)

# --获取当前日期
DATE=$(date +%y%m%d)

# --定义生成的归档文件名称
FILE=archive_${DIR_NAME}_$DATE.tar.gz
DEST=/root/archive/$FILE

# --开始归档目录文件

echo "开始归档..."
echo

tar -czf $DEST $DIR_PATH/$DIR_NAME

if [ $? -eq 0 ]
then
	echo
	echo "归档成功"
	echo "归档文件为:$DEST"
	echo
fi

exit

9、案例3:用户聊天

情境分析:如果两个用户登陆在服务器上,怎么沟通交流呢

                  是不是需要登陆QQ或者微信,来沟通呢?

解决方案:其实我们写一个简单的聊天脚本,让两个用户快速沟通!

命令格式:./chat.sh [用户名] [聊天内容]

比如:./chat.sh pan boss is coming

【让pan这个用户,知道boss来了!不要摸鱼了!!!(灬ꈍ ꈍ灬)】

#!/bin/bash

# --查看用户是否登陆
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')

if [ -z $login_user ]
then 
	echo "$1 不在线 或 不存在"
	echo "脚本退出"
	exit
fi

# --查看用户是否开启消息功能
is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}')

if [ $is_allowed != "+"  ]
then 
	echo "$1 没有开启消息功能"
	echo "脚本退出"
	exit
fi

# --查看是否有消息发送
if [ -z $2 ]
then 
	echo "没有消息发送"
	echo "脚本退出"
	exit
fi

# --从参数中获取要发送的消息
whole_msg=$(echo $* | cut -d " " -f 2-)

# --获取用户登陆的终端
user_terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')

# --写入要发送的消息
echo $whole_msg | write $login_user $user_terminal

if [ $? != 0 ]
then 
	echo "发送失败"
else
	echo "发送成功"
fi

exit

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

peter123123123123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值