0.引言
作为一个架构师,基本上要懂得一些linux的常用命令,一种典型的场景就是面试,作为一个中小型公司的架构师或者技术经理,部门通常只有一两个运维,假如前一个运维离职了,要新招一个,那么你怎么去评估新招运维的能力了,其中shell的熟练程度可以在一定程度上反正这个运维人员的水平,那么作为面试者的你,是不是应该掌握一些这个技能了,那么今天我们就来学学基本的shell操作,不需要学习多么深入,那么运维人员做的事情,不要什么事情都搞得自己很牛逼的样子,自己累死了,下面的人还觉得你是个傻逼。
1. 基本操作命令
基本的一些linux的操作必须要会吧,不然怎么查看服务器了,比如:ls,ps,mv,rm,cp,more,find,pwd,chmod,mkdir,touch,man,vi/vim,echo,>,>>...
2. Shell编程基础
我们来主要说说shell编程,也需要掌握很深,至少得看懂吧,不然怎么知道我们的运维人员是在一天磨洋工,还是真的做了一些事情,因为运维人员大部分的时间看起来是无所事事的,那么他们写一些脚本做监控、还做了应用的自动启动,那么在打绩效的,你怎么去评价他的工作量了,或者你怎么能指导人家开展工作了。
2.1 shell脚本的第一行
#!/bin/bash
这个是什么意思了?因为shell脚本是纯文本,这就是指定用什么解释器来运行这个脚本,可以指定任何可以执行shell脚本的工具,比如sh
2.2 shell变量
a=1,变量的命名规则与其他的语言并没有什么不同吗,很快入手,但是有点要特别主要,我们写java的人,通常在等号两边加上空格,这样编码规范中的要求,但是shell脚本在等号两边不能加空格,右边可以是数字,字符串,主要字符串可以用单引号也可以用双引号,主要区别是单引号是原样输出,双引号里面可以有变量的一些其他的操作。
当要获取变量的值时,在前面加上一个$,比如上面的$a,当然完整的应该是${a}
删除变量用unset,比如上面的变量a删除,unset a就可以了,当然还可以删除函数,用unset -f 函数名称,注意unset的参数, -v 代表变量,默认的,-f代表函数
2.3 向shell脚本传递参数
Shell脚本的名称 + 参数 顺序列出来
我们有个param.sh脚本
传递a b c三个参数,那么运行的结果是:
注意获取第几个位置上的参数就用$n,n代表位置,如果获取第一个参数就用$1, $#代表参数的个数,$@代表所有的参数
2.4 shell函数
Shell函数的定义可以指明用function 关键字,也可以不用,然后就是函数名称,如果有多行语句,那么用{}括起来
函数的调用直接用函数的名称,如果有参数,直接跟在函数的后面,多个参数用空格隔开,像上面两个数相加的函数调用,函数参数的使用就用2.3中介绍的脚本传参一样的。
如果函数有返回值的化,直接用return关键字,如上图中返回两个数相加,那么return $c,获取返回值得方法$?可以获取到上一条指令的返回值
2.5 if条件语句
与其他编程语言一样,都有if条件判断,格式是:
if condition
then
Command
elif condition
Command
else
Command
fi
Condition条件有两种写法,一种是用test 后面加条件语句,一种是用中括号[],括号里面前后都要有空格
test 判定与中括号一样的 比如 if test “a > b”
2.6 for循环
格式很简单,for in do done的格式,如下
2.7 while循环
格式是while do done,直接来看一个例子,看看格式怎么写的,怎么用的