shell(1)学习

了解什么是shell

在这里插入图片描述
Shell是操作系统的最外层,Shell可以合并编程语言以控制进程和文件,以及启动和控制其它程序。shell通过提示你输入,向操作系统解释该输入,然后处理来自操作的任何结果输出管理你与操作系统之间的交互。吉纳丹来说Shell就是一个用户跟操作系统之间的一个命令解释器
其中在终端中输入echo $BASH
显示文间的BASH的路径
当输入 df -h
显示系统的分区信息

Shell是用户与Linux操作系统之间沟通的桥梁,用户可以输入命令执行,又可以利用Shell脚本编程去运行。
Linux Shell种类非常多,常见的有:Bourne Shell (/usr/bin/sh或/bin/sh),Bourne Again Shell(/bin/bash)等,这里就不介绍这么多了。不同的Shell语言的语法有所不同,所以不能交互使用

最常见的Shell是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常生活中被广泛使用,也是大多数Linux系统默认的Shell。接下来先写一个简单的shell脚本。(shell脚本一般文件名以.sh结尾,同时文件第一行定义该脚本为shell脚本)

vi first_shell.sh

#!/bin/bash
#This is my First shell
echo “Hello World !”

这就是我们的第一个脚本,注解如下:
#!/bin/bash
表示定义该脚本是一个shell脚本(固定格式)
#This is my First shell
这里的#号属于注解,没有任何意义,Shell不会解析它
echo “Hello World !”
shell脚本主命令,我们执行这个脚本将看到:Hello World !信息
脚本编写完毕,如何执行呢,首先执行shell脚本需要执行权限
赋予执行权限:
chmod o+x first_shell.sh 然后./first_shell.sh执行即可:也可以直接使用命令执行, /bin/bash first_shell.sh,显示效果是一样的。

Shell变量

Shell编程语言是非类型的解释型语言,不像C++/Java语言编程时需要实先声明变量,SHELL给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中,都可以用赋值符号为变量赋值
SHELL变量分两类:局部变量和环境变量,局部变量只能创建他们的shell脚本中使用。而环境变量则可以咋创建他们的shell及其派生的任意子进程中使用,有些变量是用户创建的,其它的则是专用shell变量。
1.常用的系统变量
H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER等

set可以显示所有的变量

2自定义变量

定义变量:变量=值
撤销变量:unset 变量
声明静态变量:readonly变量,注意:不能unset
规定:
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
等号两侧不能有空格
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
变量的值如果有空格,需要使用双引号或单引号括起来
例子:
定义变量A
[jinghnag@hadoop101 datas]$ A=5
[jinghnag@hadoop101 datas]$ echo $A
5

给变量A重新赋值

[jinghnag@hadoop101 datas]$ A=8
[jinghnag@hadoop101 datas]$ echo $A
8

撤销变量A

[jinghnag@hadoop101 datas]$ unset A
[jinghnag@hadoop101 datas]$ echo $A

声明静态的变量B=2,不能unset

[jinghnag@hadoop101 datas]$ readonly B=2
[jinghnag@hadoop101 datas]$ echo B 2 [ j i n g h n a g @ h a d o o p 101 d a t a s ] B 2 [jinghnag@hadoop101 datas] B2[jinghnag@hadoop101datas] B=9
-bash: B: readonly variable

在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

[jinghnag@hadoop101 ~]$ C=1+2
[jinghnag@hadoop101 ~]$ echo $C
1+2

变量的值如果有空格,需要使用双引号或单引号括起来
[jinghnag@hadoop101 ~]$ D=I love banzhang
-bash: world: command not found
[jinghnag@hadoop101 ~]$ D=“I love banzhang”
[jinghnag@hadoop101 ~]$ echo $D
I love banzhang

可把变量提升为全局环境变量,可供其他Shell程序使用

export 变量名
[jinghnag@hadoop101 datas]$ vim helloworld.sh

在helloworld.sh文件中增加echo $B
#!/bin/bash

echo “helloworld”
echo $B

[jinghnag@hadoop101 datas]$ ./helloworld.sh
Helloworld

发现并没有打印输出变量B的值。

[jinghnag@hadoop101 datas]$ export B
[jinghnag@hadoop101 datas]$ ./helloworld.sh
helloworld
2
接下来几个特别的变量:

$n
功能描述:n为数字,$0代表该脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9{10}

$#
获取所有输入参数个数,常用于循环

∗ 、 *、 @

∗ ( 功 能 描 述 : 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , * (功能描述:这个变量代表命令行中所有的参数, *把所有的参数看成一个整体)

@ ( 功 能 描 述 : 这 个 变 量 也 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @ (功能描述:这个变量也代表命令行中所有的参数,不过 @@把每个参数区分对待)

$?

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值