目录
SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称,它既是终端上的用户与UNIX操作系统会话的语言,又可作为程序设计的语言。
变量类型
Shell中的变量主要分为三类,分别是系统变量、环境变量、用户自定义变量。系统变量,主要是用于对参数判断和命令返回值判断时使用,例如在写一个脚本文件时,可以使用如下系统变量:
$0 | 当前脚本的名称 |
$n | 当前脚本的第n个参数,n=1,2,…9 |
$* | 当前脚本的所有参数(不包括程序本身) |
$# | 当前脚本的参数个数(不包括程序本身) |
$? | 程序执行完后的状态,返回0表示执行成功 |
$$ | 程序本身的PID号 |
环境变量如下:
PATH | 命令所示路径,以冒号为分割 |
HOME | 打印用户家目录 |
HOSTNAME | 显示当前主机名 |
PWD | 显示当前所在路径 |
用户自定义变量又称局部变量,主要用在Shell脚本内部或者临时局部使用,用“=”来定义,首个字符必须为字母(a-z,A-Z),不能以数字开头,中间不能有空格,可以使用下划线(_),不能使用(-),也不能使用标点符号等。
变量可以通过“=”赋值,也可以通过“read”读入,具体如下:
1)“=”——变量名=变量值
[yemo@bogon ~]$ a=123456
[yemo@bogon ~]$ echo $a
123456
[yemo@bogon ~]$ a=${a}7890
[yemo@bogon ~]$ echo $a
1234567890
2)“read”——read 变量名 (read用法还有很多种,这里不多介绍)
[yemo@bogon ~]$ read h
1212
[yemo@bogon ~]$ echo $h
1212
变量运算
整数——expr (+加 -减 *乘 /除 %取余)
[yemo@bogon ~]$ a=$(expr 6 % 3);echo $a
0
[yemo@bogon ~]$ sum=$((1+2)); echo $sum
3
小数——bc:交互运算器
[yemo@bogon ~]$ a=3.2
[yemo@bogon ~]$ b=1.5
[yemo@bogon ~]$ c=`echo "scale=3;$a + $b"|bc` ;echo $c
4.7
流程控制
这部分的内容和C语言中的if、for、while等语句类似,只是在格式上有些许不同需要注意,判断逻辑运算符>=、<=、==等变为字符标识。通过几个脚本示例来了解下:
1)加法(for)
[yemo@bogon ~]$ cat sum_to.sh
#!/bin/bash
for (( i=1;i<=$1;i++ ))
do
sum=$[ $sum + $i ]
done
echo $sum
[yemo@bogon ~]$ chmod +x sum_to.sh
[yemo@bogon ~]$ ./sum_to.sh 10
55
[yemo@bogon ~]$ ./sum_to.sh 100
5050
- 加法(while)
[yemo@bogon ~]$ cat sum_to.sh
#!/bin/bash
a=1
while [ $a -le $1 ]
do
sum2=$[ $sum2 + $a ]
a=$[$a + 1 ]
done
echo $sum2
[yemo@bogon ~]$ ./sum_to.sh 100
5050
- 判断(if)
[yemo@bogon ~]$ cat if.sh
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "班长真帅"
elif [ $1 -eq 2 ]
then
echo "班长真丑"
fi
[yemo@bogon ~]$ bash if.sh 2
班长真丑
至于其他语句:until、break、shift、return、exit、continue…此处不多介绍。
其他
Shell还有函数、数组、并发控制等部分的内容作为shell基础需要进行学习,shell的基础命令还可以拓展到grep、sed、awk(上此的shell介绍中有讲到)、find、cut、history等,这些基础知识都是需要应用到日常的运维和开发中,以下介绍一个快速搭建lnmp项目环境的shell脚本,简单易学:
下载 LNMP 安装脚本(这里安装的是 1.9,更多版本可查看: https://lnmp.org/download.html)
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz
解压并执行它
tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh lnmp
接下来会出现大量的选项,如果不是很懂各个选项间的区别,按默认就行啦。
参考链接:
https://www.cnblogs.com/cherishthepresent/p/16925329.html
https://lnmp.org/download.html