why
1.linux运维工程师在进行服务器集群管理时候需要编写shell程序来进行服务器管理
2.java 和 python 程序员来说 需要写一些shell脚本来进行程序或者服务器的维护
3.大数据程序员写shell来管理群集
what
shell 是一个命令解释器,li它为linux内核发送请求以便运行程序的界面系统程序,用户可以用shell来启动甚至停止一个程序。
Shell 的执行方式
1.脚本必须以#!/bin/bash开头
2.脚本必须要有执行权限
编写第一个shell脚本
创建一个shell 输出 helloworld
第一步当然是vim 一个shell 文件 (文件的结尾要是.sh)
脚本有两种执行方式,第一种是输出脚本的相对路径或者绝对路径都可以
比如./xxx.sh
不过在这种情况下必须要给权限,chmod u+x +shell名字
第二种方式是 sh xxx.sh
不用给权限直接开
shell 变量
linux shell 里有两种变量用户变量 和系统变量
系统变量 $HOME $PWD $SHELL
可以用set调出来所有的系统变量
shell 变量的定义
定义变量 : 变量名字=值
撤销变量 unset 变量
声明静态变量 :readonly 注意不能unset
看出来有提示不能撤回这个静态变量
ps :变量名一般为大写
A=`date`(表示把date的本身付给A)
也可以写成A=$(date)
A=date 没有反引号的话就是把date这个单词赋给A
单行注释用#
或多行注释 :<<!
位置参数的设置
这里的位置参数简而言之就是把输入放在.sh后面
如xxx.sh 100 200
$n n为数字 $0表示命令本身1-9是第1-9个参数10个以上的大括号包含如${10}
S*代表所有参数看成一个整体
$@ 把变量的所有的值分开看
基本运算
$((运算))或者$[]
或者 expr m+n
判断语句
[ conditon ] (前后都有空格不然报错)
实例
[ sd ] 随便啥都行 都会返回 true
[ ] 返回false
判断语句
=字符串比较
整数比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
60分及格(elif也可以用)
记得用fi结尾
case 语句一可以用但是要注意
每个case 后都用;;
"值1”)
如果变量值是1则执行程序1
;;
“值2”)
如果变量值是2则执行2
;;
*) 省略其他 除去12都是
esac 结束语句