shell语句
语句格式:
在家目录下编写.vimrc文件,设置tab键缩进为4格
vim ~/.vimrc
autocmd FileType sh set ai ts=4
【1】、条件判断
双分支
#!/bin/bash
if [ $UID -eq 0 ];then
echo "我是管理员"
else
echo "我不是管理员"
fi
# 检测某一目录是否存在
#!/bin/bash
if [ -e /if_test/cdrom ];then
echo "OK"
else
mkdir -p /if_test/cdrom
echo "OK"
fi
#!/bin/bash
ping -c 3 -i 0.2 -W 1 192.168.121.180 &> /dev/null
if [ $? -eq 0 ];then
echo "通了"
else
echo "没通"
fi
多分支
if
elif
...
else
fi
#!/bin/bash
read -p "请输入你的分数:" sorce
if [ $sorce -ge 90 ] && [ $sorce -le 100 ];then
echo "优秀"
elif [ $sorce -ge 60 ] && [ $sorce -le 89 ];then
echo "及格"
else
echo "不及格"
fi
【2】、循环
1、for循环
for 变量名 in 值1 值2 值3.....
do
命令
done
#!/bin/bash
for i in 1 2 3 4 5
do
echo $i
done
[root@moudle01 20:55:43 /script]# source test04.sh
1
2
3
4
5
#!/bin/bash
a=100
for i in {1..$a}
do
echo $i
done
# for循环不支持变量
[root@moudle01 20:57:22 /script]# source test04.sh
{1..100}
#!/bin/bash
a=10
for i in $(seq $a)
do
echo $i
done
[root@moudle01 20:59:44 /script]# source test04.sh
1
2
3
4
5
6
7
8
9
10
# 批量添加用户
#!/bin/bash
for i in $(cat /script/name.txt)
do
cat /etc/passwd | awk -F: '{print $1}' | grep $i
if [ $? -eq 0 ];then
echo "$i已经被创建"
else
useradd $i
echo $i | passwd --stdin $i
fi
done
echo "初始密码为用户名"
# 探测一个网段的主机哪个存活
#!/bin/bash
a=255
alive=0
refuse=0
for i in $(seq $a)
do
ping -c 2 -i 0.2 -W 1 192.168.121.$i &> /dev/null
if [ $? -eq 0 ];then
echo "192.168.121.$i 存活"
let alive++
fi
done
let refuse=$a-$alive
echo "$alive台主机通了"
echo "$refuse台主机不通"
C语言版的for循环
for ((变量;条件;增量))
do
命令
done
#!/bin/bash
i=1
for ((i;i<=5;i++))
do
echo $i
done
2、while循环
如果条件为“:”
则表示永真,代表死循环
#!/bin/bash
i=1
while [ $i -le 7 ]
do
useradd user$i
let i++
done
(1)、中断即退出
exit:结束循环以及整个脚本
break:结束循环,继续执行循环后面的命令
continue:结束本次循环,立刻开始下一次循环
【3】、case分支
case 变量 in
模式1)
命令;;
模式2)
命令;;
*)
命令;;
esac
#!/bin/bash
case $1 in
t)
touch /opt/hahaha;;
m)
mkdir /opt/hahah;;
r)
rm -rf /opt/haha;;
*)
echo "输入错误"
esac
安装nginx
将nginx安装包放在/opt下
#!/bin/bash
# 安装依赖
yum install -y gcc make pcre-devel openssl-devel
tar -xf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure
make
make install
通过脚本控制nginx启动停止
#!/bin/bash
case $1 in
start | kai)
/usr/local/nginx/sbin/nginx;;
stop | guan)
/usr/local/nginx/sbin/nginx -s stop;;
status)
netstat -tunple | grep -q nginx
if [ $? -eq 0 ];then
echo -e "\033[35mnginx服务已开启\033[0m"
else
echo -e "\033[35mnginx服务未开启\033[0m"
fi;;
*)
echo "输入错误"
esac
【4】、函数
形式一:
function 函数名 {
命令
}
形式二:
函数名(){
命令
}
# 进一步完善nginx服务控制脚本
#!/bin/bash
a(){
echo -e "\033[$1mnginx服务已$2\033[0m"
}
case $1 in
start | kai)
/usr/local/nginx/sbin/nginx;;
stop | guan)
/usr/local/nginx/sbin/nginx -s stop;;
status)
netstat -tunple | grep -q nginx
if [ $? -eq 0 ];then
a 35 启动
else
a 35 关闭
fi;;
*)
echo "输入错误"
esac
【5】、字符串处理
1、字符串切割
$
#!/bin/bash
i=1
a=qazwsxedcrfvtgbyhnujmikolpQAZWSXEDCRFVTGBYHNUJMIKOLP1234567890
set_passwd(){
for s in {1..8}
do
n=$[RANDOM%62]
p={a:$n:1}
pass+=$p
done
echo $pass | passwd --stdin $1
pass=
s=0
}
while [ $i -le 7 ]
do
useradd "user$i"
set_passwd user$i
let i++
done
2、字符串替换
${变量名/旧/新}:只替换找到的第一个
${变量名//旧/新}:替换找到的所有
${变量名/旧/}:找到并删除
[root@moudle01 11:01:34 ~]# a=qazwddcfvb
[root@moudle01 11:03:38 ~]# echo ${a/a/o}
qozwddcfvb
[root@moudle01 11:03:52 ~]# echo ${a//d/l}
qazwllcfvb
[root@moudle01 11:04:26 ~]# echo ${a//q}
wwweee
3、字符串删除(掐头去尾)
${变量名#元素}:从头上开始删除,第一个元素必须是开头的第一个
${变量名%元素}:从尾开始删除,最后一个元素必须是最后一个
[root@moudle01 11:04:35 ~]# a=aaasssdddfff
[root@moudle01 11:05:25 ~]# echo ${a#aaa}
sssdddfff
[root@moudle01 11:05:35 ~]# echo ${a%fff}
aaasssddd
结合*去使用
[root@moudle01 11:05:42 ~]# a=abcdacgglirt
[root@moudle01 11:09:08 ~]# echo ${a#*d}
acgglirt
[root@moudle01 11:09:24 ~]# echo ${a#*g}
glirt
[root@moudle01 11:09:50 ~]# echo ${a##*g}
lirt
[root@moudle01 11:09:55 ~]# echo ${a%g*}
abcdacg
[root@moudle01 11:10:26 ~]# echo ${a%%g*}
abcdac
将后缀名为.txt的文件修改为.doc
#!/bin/bash
for i in $(ls *.$1)
do
name=${i%.*}
mv $i $name.$2
done
[root@moudle01 11:22:52 /script]# source rename.sh doc txt
标签:语句,bin,shell,echo,nginx,moudle01,root,bash
From: https://www.cnblogs.com/xuruizhao/p/18297337