前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >继续学习Shell脚本(详细)

继续学习Shell脚本(详细)

作者头像
心跳包
发布2020-08-31 10:26:11
5870
发布2020-08-31 10:26:11
举报

一、变量

定义一个变量例子:

代码语言:javascript
复制
name=xintiaobao
number=100

注意: 1,变量名和等号之间不能有空格;

2,首个字符必须为字母(a-z,A-Z)。

3, 中间不能有空格,可以使用下划线(_)。

4, 不能使用标点符号。

5, 不能使用bash里的关键字

使用变量:

只需要在一个定义过的变量前面加上美元符号 $ 就可以了, 另外,对于变量的{} 是可以选择的, 它的目的为帮助解释器识别变量的边界.

举个例子:

代码语言:javascript
复制
name="xintiaobao"
echo $name
echo ${name}
echo "my name is ${name}!"

运行

代码语言:javascript
复制
xintiaobao
xintiaobao
my name is xintiaobao!

重定义变量: 直接把变量重新像开始定义的那样子赋值就可以了:

代码语言:javascript
复制
name="xintiaobao"
name="zhangx"

只读变量: 用 readonly 命令 可以把变量字义为只读变量。

代码语言:javascript
复制
readonly name="xintiaobao"

删除变量: 使用unset命令可以删除变量,但是不能删除只读的变量。用法:

代码语言:javascript
复制
unset variable_name

变量类型

运行shell时,会同时存在三种变量:

1) 局部变量

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

2) 环境变量

所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

3) shell变量

shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

特殊变量:

image
image

* 和 @ 的区别为: * 和 @ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"1" "n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"1 2 … n"的形式输出所有参数;"1" "

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

二、Shell中的替换

转义符: 在echo中可以用于的转义符有:

image
image

使用 echo 命令的 –E 选项禁止转义,默认也是不转义的; 使用 –n 选项可以禁止插入换行符;

使用 echo 命令的 –e 选项可以对转义字符进行替换。

命令替换:

它的意思就是说我们把一个命令的输出赋值给一个变量,方法为把命令用反引号(在Esc下方)引起来. 比如:

代码语言:javascript
复制
directory=`pwd`
echo $directory

运行得到当前的目录

代码语言:javascript
复制
/xx/xx/xx/test

变量替换:

可以根据变量的状态(是否为空、是否定义等)来改变它的值.

image
image

举个例子说明下${var:-word}:

代码语言:javascript
复制
name="xintiaobao"
echo ${name:-1}

运行得到

代码语言:javascript
复制
xintiaobao
代码语言:javascript
复制
#name="xintiaobao"
echo ${name:-1}

运行得到

代码语言:javascript
复制
1

举个例子说明下${var:=word}:

代码语言:javascript
复制
name=""
echo ${name:=zhangx}
echo $name

运行结果为

代码语言:javascript
复制
zhangx
zhangx

说明name为空时,name被替换.

三、Shell运算符

算数运算符: 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr. 下面使用expr进行; expr是一款表达式计算工具,使用它可以完成表达式的求值操作;

image
image

举个例子

代码语言:javascript
复制
a=10
b=20
expr $a + $b
expr $a - $b
expr $a \* $b
expr $a / $b
expr $a % $b

运行结果

代码语言:javascript
复制
30
-10
200
0
10

注意: 1. 在expr中的乖号为:\*

2. 在 expr中的 表达式与运算符之间要有空格,否则错误;

3. 在[ a == b ]与[ a != b ]中,要需要在方括号与变量以及变量与运算符之间也需要有括号, 否则为错误的。

关系运算符:

只支持数字,不支持字符串,除非字符串的值是数字。常见的有:

image
image

注意:也别忘记了空格;

布尔运算符:

image
image

字符串运算符:

image
image

文件测试运算符:

检测 Unix 文件的各种属性。

image
image
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、变量
  • 二、Shell中的替换
  • 三、Shell运算符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档