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