shell脚本的基础知识和变量

目录

一、shell脚本的意义

二、如何创建shell脚本

三、自动添加脚本首部

​ 四、如何执行脚本

1、当脚本无可执行权限时

2、当脚本有可执行权限时

 五、对脚本进行测试

 练习:

​ 六、shell脚本中的变量

1、变量的定义方法

(1)环境级别​​

(2)用户级别

 (3)系统级别

2、变量名称的定义规则

3、变量的转义

4、声明

5、变量的数组

七、linux中命令的别名设置

(1)添加

 (2)删除

八、环境变量

九、脚本中的传参

1、非交互模式

 2、交互式


一、shell脚本的意义

Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

二、如何创建shell脚本

编辑以.sh结尾的文件,以#!/bin/bash开头。

#!/bin/bash为脚本的幻数

三、自动添加脚本首部

/etc/vimrc此文件对所有用户生效(只能超级用户编辑)
~/.vimrc此文件对当前用户生效
set nu显示行号
ts=2指定tab键的长度为两个空格
et把tab键转换为空格
ai自动缩进
.strftime自动获取时间

四、如何执行脚本

1、当脚本无可执行权限时

(1)sh westos.sh 手动在环境中开启解释器

(2).westos 在当前环境中运行shell中的指令不开启新的shell

 (3)source westos.sh 直接在当前环境中运行shell中的指令不开启新的shell

2、当脚本有可执行权限时

/mnt/westos.sh(绝对路径方式)与./westos.sh(.表示当前路径)本质上方法相同

 五、对脚本进行测试

编辑脚本westos.sh

 由于写入的cat命令错误,运行脚本时会一直处于运行状态,可以在运行时使用-x参数显示脚本运行过程,通过显示信息来调试脚本,小时=显示信息中的+表示运行的指令,不带+表示指令运行的结果,可以看出在执行cat命令时出错

 练习:

(1)编写脚本以显示ip

 

(2)显示主机名称,ip和登陆当前主机的用户

 (3)执行脚本后可以清空日志

六、shell脚本中的变量

1、变量的定义方法

(1)环境级别

当刚才的shell关闭后重新打开新的shell那么a的变量值被清除,因为当shell关闭时所有资源被系统回收,再打开新的shell时没有任何配置指定a=1

(2)用户级别

~/.bash_profile用户环境变量配置文件,source ~/.bash_profile生效当前更改信息

用户环境变量只针对被设定过的用户生效,切换用户后变量失效,因为切换后的用户开启shell时读取的是自己家目录中的.bash_profile

 

 (3)系统级别

/etc/profile系统级别的配置主文件

/etc/profile.d/westos.sh系统级环境变量自定义配置文件,生效当前更改信息,此变量设定完毕后系统中的所用用户都可以使用

2、变量名称的定义规则

不能以@,数字开头结尾,但可以以 “ _ ”开头结尾

3、变量的转义

''为强引用:能引用所有,""为弱引用:有一部分引用不了,\ ` $ ! 都引用不了

echo \#  转义单个字符

echo "# # # # #"批量转义字符

4、声明

当显示$ab时 本身让$a的值显示出来,但系统识别$ab是一个变量名称,所以在此要对a这个变量进行声明

5、变量的数组

a=(1 2 3 4 5)
a$[a[@]:起始元素id:元素个数]
echo ${a[0]}数组中第一个元素
echo ${a[1]}数组中最后一个元素
echo ${a[*]}数组中所有元素
echo ${a[@]}数组中所有元素
echo ${a[@]:0:3}数组中1-3个元素
echo ${#a[@]}数组中元素的个数
unset a[n]删除数组中第n+1个元素

*表示元素为一个整体 @表示为每个元素作为一个个体

 unset删除  unset a删除整个数组  unset a[0]删除数组中的第一个元素

七、linux中命令的别名设置

(1)添加

 编辑~/.bashrc和/etc/bashrc文件,加入vim的别名xie,是设定生效后写与vim同义

 

 切换用户后同样生效

 (2)删除

 删除两个文件vim的别名设置后依旧可以查看到别名设置

 使用unalias删除环境中的xie后,就无法查看到vim的别名设置

八、环境变量

指定在执行命令时/mnt中的脚本可以用相对路径调用

 

九、脚本中的传参

1、非交互模式

 $0 is /mnt/test.sh'  <!--脚本本身-->
'$1 is westos'  <!--脚本后所输入的第一串字符-->
'$2 is linux'
'$3 is redhat
'$* is westos linux redhat' <!--脚本后所输入的所有字符“westos linux redhat'-->
'$@ is westos linux redhat' <!--脚本后所输入的所有字符'westos''linux''redhat'-->
'$# is 3'  <!--脚本后所输入的字符串个数-->

 

 

 2、交互式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值