一.概述

  这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用。

  1.1 环境变量

    在前面章节到了linux系统的环境变量,也可以在脚本中访问这些值。下面使用set 命令来查看当前系统的环境变量列表:

    [root@hsr ~]# set

    截图一小部分,如下所示:

    
    使用echo 在环境变量这前加上美元符($)来使用这些变量,如下图所示:
    
     如果使用echo输出的字符串里含有$符号时,要加上返斜杠,不然当作了变量,如下图所示:
    

  1.2 用户变量

    除了系统环境变量,shell脚本允许在脚本中定义和使用自己的变量。定义变量允许临时存储数据并在整个脚本中使用。 用户变量可以由任何字母,数字,下划线组成的文本字符串,长度不超过20个,变量区分大小写。
    使用 = 号将值赋组用户变更,在变更,等号和值之间不能出现空格。shell脚本会自动决定变量值的数据类型,如下图所示:
    
  在脚本的整个生命周期里, shell脚本中定义的变更会一直保持着它们的值,当shell脚本结束时会被删除掉。shell脚本中定义变量,重点要注意引用一个变量值时需要使用$符号,如下图所示:
    

  1.3 命令替换

    命令替换在shell编程中处理数据很方便,会经常用到。是指把命令输出赋给变量,能过$()符号,使用如下图所示:
    
    下面来一个例子,通过脚本命令替换获得当前日期并用它来生成唯一文件名,生成日志文件路径与test3脚本文件路径一致。实现如下图所示:
    
    总结:注意1:命令替换会由该脚本创建一个独立的子shell 来运行对应的命令。正因如此,子shell所执行命令是无法使用脚本中所创建的变量的,如下所示, var1变量放入独立子shell中无法识别
    
    
    注意2:在命令行提示符下使用路径 ./ 运行命令的话,也会创建出子shell。(要运行命令的时候不加入路径,就会不会创建子shell,有疑点以后再看)。
    
    

  

  

Linux编程 21 shell编程(环境变量,用户变量,命令替换)的更多相关文章

  1. SQL进阶17-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量

    /*进阶17 变量 系统变量: 全局变量: 会话变量: 自定义变量: 用户变量: 局部变量: */ /* #一: 系统变量 #说明: 变量由系统提供,不是用户定义的,属于服务器层面 #使用的语法 #1 ...

  2. Linux下的Shell编程(2)环境变量和局部变量

    Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型. 局部变量在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量.这些变量与环境变量不 ...

  3. Linux编程 11(shell全局环境变量与局变环境变量)

    一.概述 在linux中,很多程序和脚本都通过环境变量来获取系统信息,存储临时数据,配置信息.环境变量是指用来存储有关shell会话和工作环境信息,允许你在内存中存储数据,以便程序或shell中运行的 ...

  4. Linux与Unix shell编程指南(完整高清版).pdf

    找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分 ...

  5. Linux之19——Shell编程基础详解

    第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...

  6. Linux下的Shell编程

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  7. Linux学习之Shell编程基础

    转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...

  8. [No000014A]Linux简介与shell编程

    Linux 介绍 内核 库: .so 共享对象,windows:dll 动态链接库 应用程序 Linux的基本原则: 1.由目的单一的小程序组成:组合小程序完成复杂任务: 2.一切皆文件: 3.尽量避 ...

  9. linux操作系统5 shell编程

    知识内容: 1.shell编程预备知识 2.shell变量 3.表达式与运算符 4.分支循环语句 5.函数 一.shell编程预备知识 1.什么是shell编程 shell是与linux交互的基本工具 ...

随机推荐

  1. angularJs 2-quickstart学习记录

    angular官网文档 我尝试文档中下载<快速起步>种子的方法进行quickstart. cd quickstart npm install npm start npm install 这 ...

  2. 关于get和post请求的区别

    1.标准答案 GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被Bookmark,而POST不可以. GET请求会被浏览器主动cache,而POST不会,除非手动设 ...

  3. random模块,生成随机数

    1.random.choice(sep) 从一个序列中随机选取一个元素返回 >>> list1=["a",1,2,3,"b"] >> ...

  4. Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again

    Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again https://ac.nowcoder.com/acm/contest/700/I 时间限制:C/C++ 1 ...

  5. (转载)python 命名.py 不能与模块相同,否则会报错

    在学习python网页爬虫时,测试requests的post方法进行表单提交时,命名.py文件为requests.py 代码如下: import requests params={'firstname ...

  6. 【翻译】Flume 1.8.0 User Guide(用户指南) Processors

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  7. vue + spring boot + spring security 前后端分离 携带 Cookie 登录实现 只写了个登录

    最近想弄一下vue 所以就自己给自己找坑入   结果弄的满身是伤 哈哈哈 首先我说下 前后端分离  跨域请求  我在网上找了一些  可是都是针对于 spring boot 的 我自己还有 securi ...

  8. Docker优势以及与传统虚拟机对比(1)

    docker优势 1.更快速地交付和部署: 2.更高的虚拟化(不需要额外的hypervisor支持,是内核级的虚拟化,实现更高的性能呢和效率): 3.更轻松的迁移和扩展: 4.更简单的管理  与传统的 ...

  9. Machine learning | 机器学习中的范数正则化

    目录 1. \(l_0\)范数和\(l_1\)范数 2. \(l_2\)范数 3. 核范数(nuclear norm) 参考文献 使用正则化有两大目标: 抑制过拟合: 将先验知识融入学习过程,比如稀疏 ...

  10. JS模块化工具require.js教程(二):基本知识

    前一篇:JS模块化工具我们以非常简单的方式引入了requirejs,这一篇将讲述一下requirejs中的一些基本知识,包括API使用方式等 基本API require会定义三个变量:define,r ...