本文主要是介绍据说会shell 脚本的运维,都月薪上万了!!!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
@[TOC](文章目录)
# 前言
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
# 一、Shell变量
规则:
· 命名只能使用英文字母、数字和下划线,首个字符不能以数字开头。
· 中间不能有空格,可以使用下划线(_)
· 不能使用标点符号
· 不能使用bash里的关键字(可用help命令查看保留关键字)
### 1、自定义变量
定义变量的格式:
变量名=变量值
取消变量的格式:
unset 变量名
注意事项:
√ =两边不能有空格,不要使用关键字做变量名,如:ls 、 cd等;
√ 如果变量名已经存在则覆盖之前的变量值
√ 变量名称有:字母/数字/下划线,不能以数字开始
### 2、系统预设变量
##### ① 环境变量(变量名通常大写,有操作系统维护)
存储在/etc/profile或~/.bash_profile
常见的环境变量有:PATH \ PWD \ USER \ UID \ HOME \ SHELL
##### ② 位置变量(bash内置变量,存储脚本执行时的参数)
存储脚本执行时的参数
使用$n表示,n为数字序列号
通过位置变量创建系统帐户,配置密码
```powershell
[root@localhost ~]# vim /root/user.sh
#!/bin/bash
useradd "$1" //创建用户
echo "$2" | passwd --stdin "$1" //给用户设置密码
[root@localhost ~]# sh /root/user.sh abc 123
```
##### ③ 预定义变量(bash内置变量,可以调用但是不能赋值或修改)
用来保存脚本程序的执行信息
直接使用这些变量,不能直接为这些变量赋值
|变量名| 含义 |
|--|--|
| $0 | 当前所在的进程或脚本名 |
| $$ | 当前运行进程的PID号 |
| $? | 命令执行后的返回状态,0表示正常,1或其他值表示异常 |
| $# | 已加载的位置变量的个数 |
| $* | 所有位置变量的值 |
### 3、变量中引号的区别
##### ① 多种引号的区别
|引号| 区别 |
|--|--|
| 双引号“” | 允许扩展,以$引用其他变量 |
| 单引号‘’ | 禁用扩展,即便$也视为普通符号 |
| 反引号`` | 将命令的执行输出作为变量值,$()与反引号等效 |
##### ② 全局变量与局部变量
局部变量:新定义的变量默认只是在当前shell环境中有效,无法在子shell环境中使用
全局变量:系统中的任何shell环境中都有效
# 二、Shell语句
### 1、条件测试
##### ①比较操作符介绍
|操作符| 含义 |
|--|--|
| -eq | 等于(equal) |
| -ne | 不等于(not equal) |
| -ge | 大于或等于(greater or equal) |
| -le | 小于等于(less or equal) |
| -gt | 大于(greater than) |
| -lt | 小于(less than) |
##### ②文件状态操作符介绍
|操作符| 含义 |
|--|--|
| -e | 判断对象是否存在(exist),若存在则结果为真 |
| -d | 判断对象是否为目录(directory),是则为真 |
| -f | 判断对象是否存在为一般文件(file),是则为真 |
| -r | 判断对象是否有可读权限(read),是则为真 |
| -w | 判断对象是否有可写权限(write),是则为真 |
| -x | 判断对象是否有可执行权限(excute),是则为真 |
##### ③控制操作符介绍
|操作符| 含义 |
|--|--|
| ; | 分隔多个命令。执行时互不干扰 |
| && | 前后的两个命令都执行成功,整条命令才是正确的,否则是错误 |
| II | 前后的两条命令,任何一条执行成功,整体命令都是正确 |
### 2、if判断语句
##### ①if单分支语句
语法格式:
if 条件;then
命令
fi
实例:
```powershell
[root@localhost ~]# vim /root/shell/user.sh
#!/bin/bash
read -p "请输入用户名:" user
read -s -p "请输入密码:" pass
if [ ! -z "$user"] && [ ! -z "$pass"];then
useradd "$user"
echo "$pass" | passwd --stdin "$user"
fi
```
##### ②if双分支语句
if 条件;then
命令1
else
命令2
fi
##### ③if多分支语句
语法格式:
if 条件1;then
命令1
elif 条件2;then
命令2
else
命令3
fi
实例:
```powershell
[root@localhost ~]# vim /root/shell/number.sh
#!/bin/bash
clear
num=$[RANDOM%10+1]
read -p "请输入10以内的随机整数:"guess
if [ $guess -gt $num ];then
echo "Oops,猜大了"
elif [ $guess -lt $num ];then
echo "Oops,猜小了"
else
echo "恭喜,猜对了,就是:$num"
fi
```
### 3、while循环
√ 反复测试条件,只要成立就执行命令
语法格式:
while 条件
do
命令
done
实例:
```powershell
[root@localhost ~]# vim /root/while.sh
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
done
```
### 4、for循环
作用:减少代码的冗余和重复
语法格式1:
for 变量 in 值列表
do
命令
done
语法格式2:
for (初值;条件;步长)
do
命令序列
done
实例:
```powershell
[root@localhost ~]# vim /root/for.sh
for i in 1 2 3 4 5
do
echo "this is a number $i"
done
```
这篇关于据说会shell 脚本的运维,都月薪上万了!!!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!