微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

据说会shell 脚本的运维,都月薪上万了!!!

文章目录

前言

        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为数字序列号
     通过位置变量创建系统帐户,配置密码

[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

实例:

[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
实例:

[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

实例:

[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

实例:

[root@localhost ~]# vim /root/for.sh
for i in 1 2 3 4 5
do
	echo "this is a number $i"
done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐