认识bash shell

shell是什么

介于人和计算机内核之间

人类有人类语言

计算机语言

输入ls 翻译为01 传递给内核


shell的类型

cat /etc/shells

[root@test ~]# cat /etc/shells 
/bin/sh 现在已淘汰
/bin/bash  现在常用的也是linux默认的shell管理
/usr/bin/sh  
/usr/bin/bash 现在常用的也是linux默认的shell 普通用户
/bin/tcsh   基于tsch,提供更多的扩展功能
/bin/csh  类C语言shell

/bin/bash

我们默认使用的shell就是bash

如何查看用户使用的shell

[root@localhost ~]# cat /etc/passwd   查看用户信息
root:x:0:0:root:/root:/bin/bash
czy:x:1000:1000:CZY:/home/czy:/bin/bash
dhcpd:x:177:177:DHCP server:/:/sbin/nologin  (nologin意思是禁止登录)dhcpd是程序用户,一般程序用户都是禁止登录的 

shell脚本

脚本语言:扩建语言,动态语言,也是编程语言的一种,主要用来控制软件应用程序

都是以文本形式保存,还是那句话,Linux一切皆文件

只有在被调用的时候,文本代码才会被解释或者编译,执行。 所以叫做脚本

  • 创建脚本的规范格式

后缀.sh (.txt也可以,但一般不这么写,行内约定成俗的习惯)


shell脚本的作用

1.自动化运维(配合定时任务执行)

2.批量化重复操作可以通过脚本执行,减少人工的重复输入。

3.减轻了管理员的工作量

4.提高处理文件的速度

5.避免手打配置出错(当然了,在你写脚本的时候要先测试一遍,确定可行无出错再运用到生产环境中)

++此外命令一定要多敲++


shell脚本的构成

1、声明解释器

2、#表示注释,注释掉的代码不会被执行,而且是按行进行注释

3、脚本当中的语句,linux的可执行命令都可以做为shell脚本的语句

4、脚本当中的语句按照从上到下依次按行执行


shell的执行方式

1、赋权执行 执行权限

2、不赋权执行(脚本调试)

不赋权执行

  • sh 脚本名
  • source 脚本名

对于刚刚修该的文件进行初始化操作(文件的内容都是shell语句,都是可执行的命令)执行source之后可以不需要重启,使更改的内容直接生效

sh:只在当前环境运行,并不涉及子shell环境的切换

source:新建一个shell之后继续执行,环境切换,并且所有的执行结果都会保存在这个shell里面

赋权执行:

chmod 777

./123.sh 在当前目录中执行

. /opt/123.sh 绝对路径,任何目录下都可执行

执行脚本不能放在家目录 最好是在opt目录下

结合定时任务执行,必须要绝对路径

标准输入:键盘 文件编号是0 我们执行的命令结果是。 ls cd/opt

标准输出:显示器,显示输出的结果

标准错误输出:显示器,显示错误的输入信息

重定向:

echo 123 > 123

重定向输出:将标准输出的内容保存到指定的文件 ,覆盖文件当中的原有内容

>> 也是重定向输出,在文件内容的尾部追加,不会覆盖文件的原有内容

重定向错误输出:2> 2>>

命令错了他才会记,你要是对了它反而不记入了

混合输出:&> 会覆盖原有内容

重定向输入:<

<> >>&>


怎么在shell脚本中定义变量,以及shell脚本的变量类型shell的运算符

变量:面向对象,对象的名称 对象的属性

abc=123

变量属性:值的类型

int:整数类型

string:字符串类型

布尔:ture false

浮点:1.2 3.4 5.6

int abc=1

string abc =abc

变量名=属性值

打印变量值 echo $

[root@localhost opt]# echo $a
10

变量的命令规范(自定义变量):

1、不要使用linux的系统命令作为变量名

==2、不要用中文定义 ==

3、不要使用特殊符号作为变量名称的开头 (_下划线可以使用)

==4、默认规则:中文 翻译为英文 示例学生-student ==

5、默认加上注释的,变量名的引用保持前后一致

自定义变量:

在自定义变量当中

: “” ``

整数类型可以不加引导,赋值为字符串类型,最好加上引导,以避免歧义

在给变量赋值时,单引号和双引号一样,不影响变量的值

`命令替换,先执行反撇号当中的命令,然后再把命令执行的结果赋值给变量。

打印变量是,引号的作用 这里不涉及反撇号

打印变量双引号和单引号机制不同

echo"$a"弱引用,原变量的值不变

echo’$a 强引用,变量值将不再打印,就是这个字符串

[root@localhost opt]# echo "$a"
10    弱引用,原变量的值不变
----------------------------
[root@localhost opt]# echo  '$a'
$a    强引用,变量值将不再打印,就是$a这个字符串

“${a}” 保证一定能够正确的识别变量值

[root@localhost opt]# echo "${a}"
10

read命令的方式获取变量

read -p "提示信息"变量名

read -p "输入一个数:" a
read -p "输入另一个数字" b
c=$(($a+$b))
echo $c
~              

[root@localhost opt]# source jisuanqi.sh 
输入一个数:78797987
输入另一个数字13131231231
13210029218

变量的作用范围:

默认情况,新定义的变量只能在当前的shell环境中生效

全局变量:

exprot 变量名=变量值

需要再一整套环境当中引用唯一且不需要变化的变量时,才会声明全局变量。


环境变量:

系统提前创建,用户也可以添加,设置用户的工作环境 ,配置系统行为,控制程序执行

特殊的全局变量:

用户级环境变量:只对当前用户可加

预定义环境变量:系统预设,所有人都可见,相当于全局变量

自定义的环境变量:特殊的全局变量,只对设置用户有效

$USER 显示用户的名称

$HOME 用户的家目录

$PWD:表示当前所在的工作目录

$PATH:可执行用户程序的默认路径


位置变量:

命令行参数

在脚本或者程序运行时,传递给他们的值,而且位置变量在脚本外部传递变量值

$n 1-9


预定义变量:

编程语言或者脚本解释器提供的,不能修改的。只能根据需要自动设置和更新

$*

$@

表示命令或者脚本需要处理的参数

不加引号的表现一致,都会把参数分行处理

加上引号,会把参数当成一行来处理

$#:显示需要处理的参数个数

$?:表示前一条命令或者脚本执行之后的返回状态,只有返回0,表示执行成功,所有非0全部表示执行失败

也可以用在函数中,做为retur的参数


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早上的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值