博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell编程变量
阅读量:6354 次
发布时间:2019-06-22

本文共 1642 字,大约阅读时间需要 5 分钟。

shell变量

什么是变量,存放了各种数据,在linux怎么定义了变量,name=ken,name就是变量名,ken就是变量值,

但是在shell中,有三种方式:

name=kenname='ken'name="ken"name="my name" #中间有空格的时候,需要加单引号或双引号。单纯的字符串,加不加单引号或双引号都可以。

Shell 变量的命名规范和大部分编程语言都一样。

变量名的定义

变量名由数字、字母、下划线组成;

必须以字母或者下划线开头;

不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。

使用变量

echo $name

也可以

echo {$name}

这是规范的方式,当跟其他字符连在一起的时候,用花括号区分变量,以便于显示变量。

修改变量

直接再定义就可以

比如现在的 name=ken,我想 name=bobo,直接 name=boobo 即可。

单引号和双引号的区别

所见即所得,不解释变量

' '

解释变量,获取变量的值

" "

把一个命令的执行结果赋值给一个变量

` `

把一个命令的执行结果赋值给一个变量

$()

删除变量(取消变量值)不能删除只读变量

unset name

比如设置只读变量

readonly name=变量

unset name是删除不掉的

变量的分类

局部变量

定义一个ken=18 只在当前shell有效,只有在脚本或当前命令行中定义。当再打开一个终端或者打开一个bash也是不显示的,这就是局部变量。

环境变量(全局生效,全部shell生效)

vim /etc/profile.d/自定义.shexport name=变量

而后同步

source 自定义.sh

这就设定好了全局变量。

shell变量,特殊变量

变量  含义

$0  当前脚本的文件名$n  传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#  传递给脚本或函数的参数个数。$*  传递给脚本或函数的所有参数。$?  上个命令的退出状态,或函数的返回值。 返回0是正确,返回其他数值都是错误。使用echo $?查看是否执行成功。$$  当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

 条件表达式,就是判断

[  expression  ] 表达式要有空格

整数比较符

-eq 代表 等于-ne 代标 不等于-gt  代表 大于-lt  代标 小于-ge  代表 大于等于-le   代表 小于等于

 字符串(判断字符串的时候一定要加双引号,在没有定义的变量进行判断时,不加双引号会出错)

== 是等于!= 是不等于-z 是变量为0为真-n 是变量不为空(就是0)才为真

 文件测试

-e 文件或目录存在为真-f  文件存在为真-d  目录存在为真

布尔运算符(只能适用于[   ])

! 代表 取反,就代表取相反的结果-a 代表 两个条件为真才为真-o 代表 两个有一个为真才为真

逻辑判断符

&&:前面命令正确才会执行后面的命令|| :前面命令错误才会执行后面的命令

整数运算

运算符

+-*/ 这是除法,但是它是取整% 取余

运算表达式

$(())

其他运算工具

let++  是+1 他的默认就是1let+=4 是+4

使用方法:

let x+=1 echo $x

结果就是2

再执行

let x+=1 echo $x

结果就是3

shell括号用途总结

$() :执行shell命令``:执行shell命令$(()):第一个用于简单数学运算,第二个支持三目运算符 [ ]:条件表达式,判断的时候用,里面不支持逻辑判断符${}:用途一是引用变量的时候使用,用途二是对字符串处理{}:对立面的内容进行展开,必须是两个点,比如{
1..10}

转载于:https://www.cnblogs.com/shuaiyin/p/10917084.html

你可能感兴趣的文章
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>
指纹获取 Fingerprint2
查看>>
面试题目3:智能指针
查看>>
flask ORM: Flask-SQLAlchemy【单表】增删改查
查看>>
vim 常用指令
查看>>
nodejs 获取自己的ip
查看>>
Nest.js 处理错误
查看>>
你好,C++(16)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算...
查看>>
18.3 redis 的安装
查看>>
jdbc 简单连接
查看>>
Activiti 实战篇 小试牛刀
查看>>