学习shell脚本主要是为了方便一部分的自动化运维,如一些软件的自动化的安装,避免反反复复的敲命令,尽管使用python写管理脚本更加方便,但是学一下shell还是很有必要的。
本文中使用的shell为bash。
1. 第一个shell脚本
touch test.sh #新建脚本文件
chmod u+x test.sh #添加执行权限
vim test.sh #添加脚本内容
#!/bin/bash #/bin/bash为shell命令的绝对路径
echo "hello shell"
./test.sh #执行脚本,也可使用绝对路径,如: /root/XXXX/test.sh, 或者bash test.sh
2. shell 变量
变量是shell传递数据的一种方法,变量是用来代表每个值的符号名。
shell变量分为两种:临时变量和永久变量。
临时变量:shell程序内部定义,使用范围仅限于定义它的程序,对其它程序不可见。
永久变量:即环境变量,其值不会随程序执行结束而消失。如: echo $HOME(当前用户家目录), echo $PATH
变量命名规则:由字母数字和下划线组成,但不可以以数字开头,区分大小写,变量名字长度无限制。
使用变量名时要在变量名之前加上前缀"$"。
变量赋值时复制号两侧不可有空格: 如 num1=123,num2=$num1, num3=$(date)
输出变量:echo $num1 $num2 $num3
变量和其他字符串组成新的字符串时变量要用"{}"与字符串分隔,防止出错:
DAY=Mon
echo Today is ${DAY}day
列出所有变量,包含临时变量和永久变量:
set #列出所有变量
set | grep HOME #过滤出环境变量$HOME
3. 单引号和双引号的区别
单引号中的内容原样输出,其内包含的命令不会执行,只是当做字符串进行输出: echo ‘the date is ·date·’ , echo 'num1=$num1'
双引号中的命令会被执行,执行结果作为最终字符串的一部分输出: echo "the date is `date`" , echo "num1=$num1"
4. 删除变量
unset
unset num1 #删除变量num1, 此时再输出num1时num1已被删除。
5. 位置变量和特殊变量
touch test2.sh
chmod u+x test2.sh
vim test2.sh
echo $0 #执行脚本的命令, 此处为: ./test2.sh
echo $1 #第一个参数,即a
echo $2 #第二个参数, 即b
echo $* #所有参数,即a b
echo $# #参数个数 ,2
echo $? #执行上一个指令的返回值,成功为0,失败非0
echo $$ #当前进程PID
./test2.sh
6. 输入变量
read
read a b c #输入三个变量。分别复制给a,b,c
echo $a $b $c
read -p "enter a number" a # -p 输入提示语
echo $a
7. 算数运算
expr
expr只能对整数进行算数运算,运算符两侧要有空格。
expr 1 + 2
expr 1 - 2
expr 1 / 2
expr 1 \* 2 #expr的乘法比较特殊,需要转义字符
expr $num1 - $num2
expr `expr num1 + $num2` \* $num2 #复合运算
现在正在做系列视频课程,课程中会提供视频中涉及的操作文档、软件包,系列课程内容更加完整、贴近实际工作。欢迎感兴趣的小伙伴到[网易云课堂](https://study.163.com/course/introduction/1005734052.htm)进行学习。