Linux 一学就会 --Shell 教程 || Shell 的基础用法(详细)

这是小编在IT行业多年摸爬滚打为大家总结出来的,里面有很大实际的操作大家可以试着拿去练练手,如有什么不足的还望指出。【抱拳】 更多的技术干货还请移☞公众号【学神来啦】!
交流群:661308959

shell 基本语法

1.1 什么是shell?

Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可以是交互式也可以是非交互式的
在这里插入图片描述
我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

当前终端使用的哪种shell?

在这里插入图片描述
大多数linux发行版本默认shell使用的是bash

1.2 扩展:编程语言分类

编程语言主要用:低级语言和高级语言
1)低级语言:
机器语言:二进制语言
汇编语言:符号语言,使用助记符来代替操作码,也就是用符号代替机器语言的二进制码
它们都是面向机器的语言

2)高级语言:
它是比较接近自然语言或者说人类语言的一种编程,用人们能够容易理解的方式进行编写程序,
静态语言:编译型语言 如:c 、 c++ 、 java,
动态语言:解释型语言 如: php 、 shell 、 python 、 perl
gcc编译器:(解释器) 将人类理解的语言翻译成机器理解的语言
静态语言和动态语言的区别:
静态语言编译时,变量的数据类型是确定的,静态语言对硬件更友好,运行效率更高。
动态语言,运行时确定变量的数据类型,且运行时可改变变量的类型。动态语言更简洁,对人类更友好,可以把更多精力放在业务逻辑上。

1.3 什么是SHELL脚本?

shell脚本:就是说我们把原来linux命令或语句放在一个文件中,然后通过这个程序文件去执行时,我们就说这个程序为shell脚本或shell程序;我们可以在脚本中输入一系列的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的shell脚本。
先手写一个脚本体验一下:

[root@xuegod63 ~]# vim test.sh   #写入以下内容
#!/bin/bash
# This is shell.
echo "hello world"
mkdir /tmp/test
touch /tmp/test/a.txt

在这里插入图片描述
注释:
1、!/bin/bash 作用:告诉脚本使用的是哪种命令解释器。如不指shell,以当前shell作为执行的shell。
2、在shell中以#表示开头,整个行就被当作一个注释。执行时被忽略。
3、shell程序一般以.sh结尾

[root@xuegod63 ~]# chmod +x test.sh 
[root@xuegod63 ~]# ./test.sh   #执行
hello world

创建shell程序的步骤:
 第一步:创建一个包含命令和控制结构的文件。
 第二步:修改这个文件的权限使它可以执行。 使用chmod +x test.sh
 第三步:检测语法错误 bash -x abc.sh
 第四步:执行 ./example
shell脚本的执行通常有以下几种方式
1、/root/test.sh 或者 ./test.sh (当前路径下执行脚本的话要有执行权限chmod +x test.sh)
2、bash test.sh 或 sh test.sh (这种方式可以不对脚本文件添加执行权限)
3、source test.sh (可以没有执行权限) . test.sh
4、sh < test.sh 或者 cat test.sh |sh(bash)

SHELL变量及运用

2.1 shell变量
变量是shell 传递数据的一种方法。变量是用来代表每个值的符号名。我们可以把变量当成一个容器,通过变量,可以在内存中存储数据。也可以在脚本执行中进行修改和访问存储的数据

变量的设置规则:

1.变量名称通常是大写字母,它可以由数字、字母(大小写)和下划线_组成。变量名区分大小写;但是大家要注意变量名称不能以数字开头

2.等号 = 用于为变量分配值,在使用过程中等号两边不能有空格

3.变量存储的数据类型是整数值和字符串值

4.在对变量赋于字符串值时,建议大家用引号将其括起来。因为如果字符串中存在空格符号。需要使用单引号或双引号

5.要对变量进行调用,可以在变量名称前加美元符号$

6.如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 变 量 名 ” 或 用 变量名”或用 {变量名}包含

变量的分类
按照变量的作用可以分成4类:

1、用户自定义变量

2、环境变量:这种变量中主要保存的是和系统操作环境相关的数据。

3、位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。$1 $2 …

4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

按照变量作用域可以分成2类:全局变量和局部变量。
局部变量是shell 程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量和预定义变量。
全局变量是环境变量,其值不随shell 脚本的执行结束而消失。

2.2 用户定义变量

变量名命名规则:由字母或下划线打头,不允许数字开头,后面由字母、数字或下划线组成,并且大小写字母意义不同。在使用变量时,在变量名前加$
例1:给变量var1赋值

[root@xuegod63 ~]# var1=123
[root@xuegod63 ~]# echo $var1
123
variable   [ˈveəriəbl]  变量

例2:错误的赋值方式,不允许数字开头,等号两边不能有空格

[root@xuegod63 ~]# var2 =456
bash: var2: 未找到命令...
[root@xuegod63 ~]# var2= 456
bash: 456: 未找到命令...
[root@xuegod63 ~]# var2 = 456
bash: var2: 未找到命令...
[root@xuegod63 ~]# 3var2 = 456
bash: 3var2: 未找到命令...

例3:变量值的叠加,使用${}
n a m e 是 name是 name{name}的简化版本,但是在某些情况下,还必须使用花括号引起的方式来消除歧义并避免意外的结果

[root@xuegod63 ~]# var4=mysql	
[root@xuegod63 ~]# echo $var4
mysql
[root@xuegod63 ~]# echo $var4-db.log
mysql-db.log
[root@xuegod63 ~]# echo $var4.db.log
mysql.db.log
[root@xuegod63 ~]# echo $var4db.log  	#发现输出的结果不是我们想要的,怎么办?
.log
[root@xuegod63 ~]# echo ${
   var4}db.log
mysqldb.log
2.3 命令的替换,使用$()或反引号

例1: 在命令中调用date命令输出值

[root@xuegod63 ~]# echo `dat
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值