大家好,这里是天亮之前ict,本人网络工程大三在读小学生,拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识,希望能提高自己的技术的同时,也可以帮助到大家
另外其它专栏请关注:
锐捷数通实验:锐捷数通实验
网络工程师成长日志:网络工程师成长日志
it自动化运维:it自动化运维
一 shell脚本小案例
由这个非常简单的小案例,我们可以看出:
在脚本文件的开头,需要加上#!/bin/bash 来定义解释器/bin/bash
该脚本文件应该为可执行的权限,所以应该用chmod +x 脚本文件来增加可执行权限,这样一个最简单的shell脚本就做出来了
二 变量
shell编程中变量可分为三种,分别是系统变量、环境变量和用户变量,在定义变量时,不能以数字开头,中间不能有空格,也不能用标点符号。
定义一个简单变量
export设置环境变量。使用export设置的变量就成为了环境变量,而没有使用export 设置的则是自定义变量。但是export命令新增加的环境变量只有在每次登陆的时候有效。
通过export设置的变量会占用一定的内存空间,例如:
注:env列出所有环境变量及其赋值
常用的还有位置变量,使用$n表示,其中n为数字的序列号,例如输出第1,2,4,5个字符,abde在abcdefg中排第1,2,4,5个,所以正常输出abde
一个经典小案例是创建用户和密码:
比如编写shell创建用户和密码,第一个变量是用户名,第二个变量是密码,这样这两个变量可以在shell脚本中用$1和$2表示
这样就成功创建了一个叫zqr的用户,密码是redhat
shell系统变量,主要是用于对参数判断二号命令返回值判断时使用
$0 | 当前脚本的名称 |
$n | 当前脚本的第n个参数,n=1,2,…9; |
$* | 当前脚本的所有参数(不包括程序本身); |
$# | 当前脚本的参数个数(不包括程序本身); |
$? | 令或程序执行完后的状态,返回0表示执行成功; |
$$ | 程序本身的PID号 |
也可以将命令的结果复制给一个变量
将nmcli设备状况结果赋值给device这个变量
所有变量在默认情况下,都是字符型,比如设置两个变量a和b,a=1,b=2,c=$a+$b,此时echo $c就是1+2,因为此时1和2都是字符。要想输出3,应该declare -i申明变量类型是int整型。例如:
“生活的方向无论你如何选择都会后悔,人总向往没经历过的生活”