变量是一个很重要的概念,无论是bash脚本还是其他语言,都是如此。在bash中,创建变量很简单,给变量一个名称即可。默认情况下,变量的值为空。我们可以通过等号为变量赋值。需要注意的是,变量变量的值不是一个概念。当给定变量一个名称后,例如myvar,我们需要通过$取得变量的值,即$myvar。使用echo输出变量的值。

输出变量的值的格式为:echo $myvar 或者 echo ${myvar}

使用变量的时候,需要注意以下几点:

1. 给变量赋值的时候,如果值包含空格,需要用单引号或者双引号包起来,否则会引起错误

2. 给变量赋值的时候,如果使用单引号,那么单引号里面的变量就不会解析成真正的值。使用双引号则可以

3. 可以将一个命令执行的结果赋给一个变量。格式为:myvar=$(command) 或者 `comand`。值得注意的是,务必要将$()和${}的用途分开

4. 变量的扩增,即将新的内容增加到变量原来的值上去。格式为"$变量名称" 或 ${变量} 扩增内容

5. 使用export将变量变成环境变量,使得bash子进程可以使用变量。请看下图:

6. 判断变量是否未设置,如果未设置则用-后面的内容赋值。语法为:var2=${var1-hellovar1}(若var1未设置,那么将hellovar1赋值给var2,否则将var1的值赋给var2)。需要注意的是,如果var1设置为空值了,那么也算是赋值了

7. 判断变量是否未设置或者设置为空值,如果未设置或者设置为空值则用-后面的内容赋值。语法为:var2=${var1:-hellovar1}。如下图,注意与第六点区分开

关于第6、7的更多用法与规则,参考下表(出自鸟哥Linux私房菜:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_2.php):

变量配置方式 str 没有配置 str 为空字符串 str 已配置非为空字符串
var=${str-expr} var=expr var= var=$str
var=${str:-expr} var=expr var=expr var=$str
var=${str+expr} var= var=expr var=expr
var=${str:+expr} var= var= var=expr
var=${str=expr} str=expr
var=expr
str 不变
var=
str 不变
var=$str
var=${str:=expr} str=expr
var=expr
str=expr
var=expr
str 不变
var=$str
var=${str?expr} expr 输出至 stderr var= var=$str
var=${str:?expr} expr 输出至 stderr expr 输出至 stderr var=$str

菜鸟学Linux - 变量基本规则的更多相关文章

  1. 【菜鸟学Linux】Cron Job定期删除Log(日志)文件

    以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长 ...

  2. 菜鸟学Linux命令:find命令 查找文件

    find命令是Linux下最常用的命令之一,灵活的使用find命令,你会发现查找文件变得十分简单. 命令格式 find [指定查找目录]  [查找规则(选项)]  [查找完后执行的动作] 参数规则 - ...

  3. 菜鸟学Linux - bash的配置文件

    bash是各大Linux发行版都支持的shell.当我们登陆bash的时候,虽然我们什么都没做,但是我们已经可以在bash中调用各种各样的环境变量了.这是因为,系统中已经定义了一系列的配置文件,以及加 ...

  4. 菜鸟学Linux命令:nohup命令启动程序

    在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止. 要实现守护进程,一种方法是按守护进程的规则去编程,比较麻烦:另一种方法是仍然用普 ...

  5. 菜鸟学Linux命令:lsof命令 查找指定用户、进程、端口打开的文件

    lsof,list open files, 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 命令格式:ls ...

  6. 菜鸟学Linux命令:tar命令 压缩与解压缩

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以 ...

  7. 菜鸟学Linux命令:ssh命令 远程登录

    1.查看SSH客户端版本 有的时候需要确认一下SSH客户端及其相应的版本号.使用ssh -V命令可以得到版本号.需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用Op ...

  8. 菜鸟学Linux命令:chmod命令和数字文件权限

    chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权限 ...

  9. 菜鸟学Linux命令:grep配合ls等使用

    linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...

随机推荐

  1. Chosen三级联动

    上一篇介绍了  Chosen 的使用,这篇介绍联动.看代码: var addressResolve = function (options) { //检测用户传进来的参数是否合法 if (!isVal ...

  2. HTTP 中状态码 302的使用场景

    一直都知道302是临时重定向,可是不懂为什么要用这个,直到看到了这个 这样就可以用一个URL,来访问其他的URL上的资源了,非常的nice

  3. 设置 jsp 表格相邻两行的颜色不一样

    转载网址:https://zhidao.baidu.com/question/134905332.html?fr=iks&word=for+%28var+i%3D0%3Bi%3CTable.r ...

  4. 2017 计蒜之道 初赛 第一场 A、B题

    A题 阿里的新游戏 题目概述: 阿里九游开放平台近日上架了一款新的益智类游戏——成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋 ...

  5. 20165322 第七周 mybash 的实现

    mybash的实现 要求 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解,实现过程和问题解决的博客 相关函数的作用 fork fork()函数通过系统调 ...

  6. BZOJ1116:[POI2008]CLO(并查集)

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个t ...

  7. nssm 在windows上部署服务

    简介 NSSM是一款可将Nodejs项目注册为Windows系统服务的工具.当你的Node.js项目需要部署在Windows Server上时,NSSM是一个不错的选择. 特点 NSSM将Node.j ...

  8. Nodejs与mysql连接池的应用(pool)

    /* * 连接池 连接和缓存的技术 * */ var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit:2 ...

  9. Maven常用的构建命令

    1.mvn -v 查看maven版本 2.mvn compile 编译项目,生成target文件夹,其中包含编译生成的字节码文件和测试报告.打开cmd,cd到项目的根目录,运行该命令如图所示(如果是第 ...

  10. Flask—09-项目部署(01)

    项目部署 WEB工作原理 客户端(chrom) <=> WEB服务器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=& ...