shell变量

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

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

name=ken

name='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/自定义.sh

export name=变量

而后同步

source 自定义.sh

这就设定好了全局变量。

shell变量,特殊变量

变量  含义

$  当前脚本的文件名

$n  传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$,第二个参数是$。

$#  传递给脚本或函数的参数个数。

$*  传递给脚本或函数的所有参数。

$?  上个命令的退出状态,或函数的返回值。 返回0是正确,返回其他数值都是错误。使用echo $?查看是否执行成功。

$$  当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

条件表达式,就是判断

[  expression  ] 表达式要有空格

整数比较符

-eq 代表 等于

-ne 代标 不等于

-gt  代表 大于

-lt  代标 小于

-ge  代表 大于等于

-le   代表 小于等于

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

== 是等于

!= 是不等于

-z 是变量为0为真

-n 是变量不为空(就是0)才为真

文件测试

-e 文件或目录存在为真

-f  文件存在为真

-d  目录存在为真

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

! 代表 取反,就代表取相反的结果

-a 代表 两个条件为真才为真

-o 代表 两个有一个为真才为真

逻辑判断符

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

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

整数运算

运算符

+

-

*

/ 这是除法,但是它是取整

% 取余

运算表达式

$(())

其他运算工具

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

let+= 是+

使用方法:

let x+=1

echo $x

结果就是2

再执行

let x+=1

echo $x

结果就是3

shell括号用途总结

$() :执行shell命令

``:执行shell命令

$(()):第一个用于简单数学运算,第二个支持三目运算符 

[ ]:条件表达式,判断的时候用,里面不支持逻辑判断符

${}:用途一是引用变量的时候使用,用途二是对字符串处理

{}:对立面的内容进行展开,必须是两个点,比如{..}

Shell编程变量的更多相关文章

  1. shell编程变量赋值

    [shell编程变量赋值] 1.等号两边均不能有空格存在.例, a="hello world"   2.变量和其它文字以{}或空格格开,否则会混淆.例, 有时候变量名可能会和其它文 ...

  2. Linux_10------Linux之shell编程------变量

    .-9 vim num.sh #! /bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) #变量sum是num1和num2的综合 echo $sum 执行 ./ ...

  3. Linux Shell编程变量赋值和引用

    我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh  ...  注意:最好使用“! ...

  4. shell编程—变量(三)

    在shell脚本中,变量分两种,系统变量和自定义变量. 系统默认变量是系统自带的一些变量,如path为路径变量 用户自定义变量为在编写吧脚本的时候自己定义的一些变量 变量名命名规则 首个字符必须为字母 ...

  5. shell 编程 变量

    转自:http://blog.csdn.net/qq504196282/article/details/52994249 shell之变量和引用 分类:SHELL编程基础 (470)  (0)  举报 ...

  6. shell编程-变量

    Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: VALUE=“tmp” 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵 ...

  7. shell编程变量介绍与表达式详解

    shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据.脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则. 在 Bash shell ...

  8. shell编程——变量的数值计算

    在shell脚本中,有时候会需要对数值类型的变量进行计算,通常我们用的是(()) [root@localhost collect]# ((a=1+2)) [root@localhost collect ...

  9. 1.shell编程-变量的高级用法

    1.1.变量替换 变量替换的六种形式 实例:非贪婪和贪婪的区别 从头部删除 [root@VM_0_9_centos shell_learn]# var_1="i love you,do yo ...

随机推荐

  1. 大哥带的mssql注入拿shell

    任务二 注入点拿shell 路径的爆破 https://blog.csdn.net/edu_aqniu/article/details/78409451 0X01判断 是否为判断当前数据库用户名是否为 ...

  2. wannafly 练习赛11 B 假的字符串(字典树+建边找环)

    链接:https://www.nowcoder.com/acm/contest/59/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit ...

  3. 【TIL】today i learned

    20191115 JSON解析网站 https://www.json.cn/    方便简洁,左侧放JSON表达式,右侧自动解析 联系英文盲打网站 https://www.keybr.com/  字母 ...

  4. 微信 JS-SDK 各种问题记录

    在开发微信公众号网页中,使用微信的 JS-SDK 会遇到各种坑.记录遇到的坑及解决方法. 1.JS-SDK 配置(url 指向). 在 JS-SDK 配置中,配置的签名基本在服务器完成,网上有各种方法 ...

  5. Mybaits配置多个数据库操作sql环境

    mybitas可以配置sql语句适用于不同数据库下的操作,因为不同数据库sql语句可能有差别,接下来介绍如果进行操作 1.在jdbc.properprites配置驱动 jdbc.driver=com. ...

  6. python读取文件时遇到非法字符的处理 UnicodeDecodeError: 'gbk' codec can't decode bytes in position

    报错UnicodeDecodeError: 'gbk' codec can't decode bytes in position ipath = 'D:/学习/语料库/SogouC.mini/Samp ...

  7. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_2 Mybatis中编写dao实现类的使用-保存操作

    再完善.saveUser的方法 测试保存的操作 报错了 SqlSession的insert的源码 我们在执行Insert的时候,并没有把user对象传过去 usersex改成sex 再次测试

  8. C#SQL小结

    对于c#获取Sql数据目前我采用的是 System.Data.SqlClient.SqlDataReader类. 主要用到如下API: SqlDataReader.Read():每次获取一行的数据,直 ...

  9. nginx详解反向代理,负载均衡,LNMP架构上线动态网站

    1.nginx介绍 nginx.org Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/ ...

  10. OutLook会议室预定提醒

    项目组采用敏捷开发管理,每两周一个迭代.写个工具做会议室预定. 代码下载:https://download.csdn.net/download/linmilove/10547579 Appointme ...