linuxshell简单编程(linuxshell脚本编写基础)
linuxshell简单编程(linuxshell脚本编写基础)a、将shell脚本文件所在的目录添加的PATH环境变量中在执行脚本文件之前要让shell找到我们创建的文件test。那么如何让shell找到我们的文件呢。通常用以下两种方法#!/bin/bash(3)将shell命令添加到创建的文件中 并保存退出(4)执行脚本文件
Linux中的脚本其实就类似我们在windows系统中编写的批处理。
编写流程
(1)使用编辑器(如vim)创建一个文件test.sh,文件后缀为.sh。
(2)在第一行指定要使用的shell 格式如下
#!/bin/bash
(3)将shell命令添加到创建的文件中 并保存退出
(4)执行脚本文件
在执行脚本文件之前要让shell找到我们创建的文件test。那么如何让shell找到我们的文件呢。通常用以下两种方法
a、将shell脚本文件所在的目录添加的PATH环境变量中
b、在命令提示符后用绝对或者相对文件路径用来引用shell脚本
添加运行权限
- chmod x test.sh
执行(在当前目录下)
- ./test.sh
变量赋值
在shell脚本中我们可以使用的变量有以下两种
a、环境变量
b、用户自定义变量
————————————————
#!/bin/bash
read -p "please input ipaddr:" IP
read -p "please input netmask:" MASK
read -p "please input gateway:" WAY
cd etc/sysconfig/network-scripts/
echo "DEVICE=eth0" > ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "BOOTPROTO=static" >> ifcfg-eth0
echo "IPADDR=$IP" >> ifcfg-eth0
echo "NATMASK=$MASK" >> ifcfg-eth0
echo "GATEWAY=$WAY" >> ifcfg-eth0
ifdown eth0
ifup eth0
————————————————
注:
IP MASK WAY顾名思义就是我们定义的变量了,我们给其赋值,再通过$IP $MASK $WAY调出它所表示的值(字符串)
———————
read指令 结合我们的变量,就可以实现将用户输入的值赋给变量的过程
结构:
read -p "提示语 " 变量
———————
添加变量之后,echo后面必须是双引号,不能是单引号了,引用变量前面不要忘了加$
————————————————
if判断语句
———————
单分支结构
if 条件
then 成立的子语句
fi
———————
双分支结构
if 条件
then 成立的子语句
else 不成立的子语句
fi
———————
多分支结构
if 条件
then 成立子语句
elif 条件
then 成立子语句
else 不成立的子语句
fi
————————————————
#!/bin/bash
read -p "please input a num:" NUM
if [ $NUM -lt 5 ]
then echo "lt"
elif [ $NUM -eq 10 ]
then echo "eq"
else echo "gt"
fi
————————————————
#!/bin/bash
read -p "please input ipaddr:" IP
if `ping -c2 -i0.2 -w2 $IP &> /dev/null`
then echo "$IP is up"
else echo "$IP is down"
fi
————————————————
循环语句 for wile
for和wile的区别
for 根据循环的次数(取值列表)循环
wile 根据条件循环
————————
for格式
for 变量 in 取值列表
do
子语句
done
—————————
wile格式
while 条件
do
子语句
done
—————————
检测内网主机存活状态【10.0.110.0/24】
————————————————
#!/bin/bash
NET=10.0.110.
for IP in {1..254}
do
if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
then echo -e "$NET$IP is \033[31mup\033[0m"
else echo -e "$NET$IP is \033[32mdown\033[0m"
fi
done
————————
#!/bin/bash
NET=10.0.110.
IP=200
while [$IP -lt 254 ]
do
let IP=IP 1
if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
then echo -e "$NET$IP is \033[31mup\033[0m"
else echo -e "$NET$IP is \033[32mdown\033[0m"
fi
done
————————————————
case格式
case 变量 in
模式1)
子语句
;;
*)
子语句
;;
esac
—————————
函数定义
函数名(){
}
调用:函数名
—————————
实例解析:Nginx自启动脚本
#!/bin/bash
# chkconfig: - 85 15
# description:Nginx
nginx=/usr/local/nginx/sbin/nginx
start(){
echo "nginx starting .... [OK] "
$nginx
}
status(){
if `ss -antpl | grep nginx > /dev/null`
then echo "nginx starting .... "
else echo "nginx stoping .... "
fi
}
stop(){
echo "nginx stoping .... [OK] "
$nginx -s stop
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage :$0 {start|stop|restart}"
esac
————————————————
- chkconfig --add nginxd
默认都是关闭的off
- chkconfig --list nginxd
我们将5级别打开on
- chkconfig --level 5 nginxd on
接下来,我们重启操作系统
- reboot