shell脚本(1)

目录

什么是shel

什么是shell脚本

sehll脚本能干什么

shell基本规范

shell脚本运行的方式

shell变量

shell变量概述

shell变量定义的方式

自定义变量

系统环境变量


什么是shel

Shell是一种命令行解释器,是一种提供了用户与操作系统内核进行交互的接口。它允许用户在Linux或Unix系统(包括macOS)下输入一系列命令来完成各种任务,比如文件管理、软件安装、进程监控等等

还可以理解为它是位于系统的最外层,负责人机对话:命令的翻译输入和处理结果输出

什么是shell脚本

 shell脚本是一种文本文件,扩展名是.sh,它包含一系列shell命令和控制语句,还可以自动化的执行一些任务或操作,可以批量的完成各种任务,从而提高工作效率

sehll脚本能干什么

  • 日常操作:shell脚本可以自动化完成一些要备份文件,压缩文件,清理临时文件等

  • 系统操作:通过shell脚本来实现文件系统监控,进程的监控,系统资源的监控等

  • 自动化文件:可以通过shell脚本来批量的创建文件,修改文件的名称,文件格式的转换等

  • 系统安全:shell脚本还可以用来设置防火墙规则

  • 自动化安装:通过shell脚本可以自动的安装并配置相关的文件等

shell基本规范

  • 建议脚本存放在固定的目录里

  • 脚本文件内容的开头必须是#!/bin/bash,来指定命令解释器

  • 后缀名为.sh,便于我们自己识别

  • 一些比较复杂的脚本,可以添加上注释,防止自己不理解某个任务的含义

  • 脚本中文件必须为绝对路径

shell脚本运行的方式

  • ./脚本名 相对路径方式运行必须有x权限

  • sh 脚本名

  • source 脚本名 以root身份运行可以没有x权限

  • . 脚本名

  • /sh/test.sh 绝对路径方式运行必须有x权限

shell变量

shell变量概述

变量是shell传递数据的一种方法,通过变量的定义和使用,shell脚本可以实现操作的灵活和可配置,也即是说用一个固定的字符串来表示不固定的值  

shell变量定义的方式

  • 自定义变量

  • 系统环境变量

  • 位置变量

  • 预定义变量

自定义变量

变量名不能出现"-"符号,当变量的值有空格的时候需要用引号括起来

[root@localhost ~]# var_="hh oo"
[root@localhost ~]# var-="hh oo"
-bash: var-=hh oo: 未找到命令

 然后在引用这个变量

[root@localhost ~]# echo $var_
hh oo
[root@localhost ~]# echo ${var_}
hh oo
[root@localhost ~]# unset var_

还可以查看所有的变量

[root@localhost ~]# set

还可以通过grep过滤出我们自定义的变量

[root@localhost ~]# set | grep var_
var_='hh oo'

当我们不需要这个变量了还可以取消定义

[root@localhost ~]# unset var_

引用变量,双引号和单引号的区别

[root@localhost ~]# echo "$var_ hello"  
hh oo hello
[root@localhost ~]# echo '$var_ hello'  
$var_ hello
[root@localhost ~]# echo "$var_ hello \$SHELL" 
hh oo hello $SHELL

##双引号是引用里面的变量

##单引号是把$符号当成字符串来显示

##第三个是正常引用变量而后面那个\是把$符号转译成字符串了所以不会引用后面的变量

 然后就是给命令赋予变量,比如我们要给ip地址过滤出来,首先把ip地址过滤出来然后在给这个命令赋予变量

[root@localhost ~]# ifconfig ens33 | grep "inet" | grep -v "inet6" | awk '{print $2}'
192.168.8.6

上面这个命令是把ip过滤出来,然后给命令赋予变量有两种方式

[root@localhost ~]# IP=$(ifconfig ens33 | grep "inet" | grep -v "inet6" | awk '{print $2}')

或者

[root@localhost ~]# IP=`ifconfig ens33 | grep "inet" | grep -v "inet6" | awk '{print $2}'`

这样就是把命令赋予变量了

系统环境变量

系统环境变量就是系统已经定义好的变量

export就是查看系统变量

[root@localhost ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="ansi-1"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
##下面还有很多

 我们可以修改环境变量配置文件:/etc/profile

[root@localhost ~]# vim /etc/profile
# /etc/profile
MLQ=mlq

修改完成之后还需要执行一下这个配置文件才能生效

[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo "$MLQ"
mlq

还有一些root用户的局部配置文件/root/.bash_profile

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值