一、变量赋值和引用

Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则:

  • 首个字符必须为字母(a-z,A-Z)或者_
  • 变量名中间不能有空格,可以使用_连接
  • 不能使用其他表达符号

需要给变量赋值时,可以这么写

变量名=值 

给变量赋值时,=两边不能留空格

取用一个变量的值,可以使用${变量名},当然在一般情况下,可以简写为$变量名

user@ae01:~$ HELLO="HELLO"  #等号两边不能有空格
user@ae01:~$ echo ${HELLO}
HELLO
user@ae01:~$ echo $HELLO
HELLO
user@ae01:~$

在某些情况下,需要使用${变量名}而不能用$获取变量,

echo $HELLOabc

user@ae01:~$ echo ${HELLO}abc
HELLOabc

二、环境变量的设置和查看

显示某一环境变量

user@ae01:~$ echo $HOME
/home/user

设置一个环境变量的方法

  • 可以通过配置文件来添加环境变量的文件 (需要通过 source file 命令来重新读取和执行文件使得这次改动生效)
    • /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行
    • /etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量
    • ~/.bash_profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变游戏量,执行用户的.bashrc文件。/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
    • ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取
    • /etc/rc.local:自动执行的脚本
  • 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
    user@ae01:~$ export HELLO="hello"
    user@ae01:~$ echo $HELLO
    hello

使用 env 命令将显示所有的环境变量

user@ae01:~$ env
TERM=xterm
SHELL=/bin/bash
HADOOP_HOME=/usr/local/ae/hadoop-1.2.
......
_=/usr/bin/env

使用 set 命令将显示本地所有的 Shell 变量,这里数据太多我们只通过 less 查看前面的一小部分

user@ae01:~$ set | less
ANT_HOME=/usr/local/ae/apache-ant-1.9.
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION=/etc/bash_completion
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_COMPLETION_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([]="" []="" []="" []="" []="release" []="x86_64-pc-linux-gnu")
BASH_VERSION='4.2.24(1)-release'
CLASSPATH=:.:/usr/local/ae/jdk1..0_51/lib:/usr/local/ae/jdk1..0_51/jre/lib
COLUMNS=
DIRSTACK=()
EUID=
GROUPS=()
HADOOP_HOME=/usr/local/ae/hadoop-1.2.
HADOOP_HOME_WARN_SUPPRESS=
:

使用 unset 来清除环境变量

user@ae01:~$ echo $HELLO
hello
user@ae01:~$ unset HELLO
user@ae01:~$ echo $HELLO user@ae01:~$

使用 readonly 设置环境变量为只读

user@ae01:~$ export HELLO="hello"
user@ae01:~$ echo $HELLO
hello
user@ae01:~$ readonly HELLO

注意:环境变量设置为只读后不能修改和删除

Shell 编程基础之变量和环境变量的更多相关文章

  1. shell-bash学习01基础、打印、环境变量

    基础 终端提示符: username@hostname$; $: 一般用户 #:root用户 运行脚本 Bash执行: * bash script.sh; 直接运行: 脚本开头添加shebang起始: ...

  2. 玩转变量、环境变量以及数学运算(shell)

    变量和环境变量    var=value  给变量赋值,输出语句:$ echo $var或者是$ echo ${var},记住中间有个空格 例如:name="coffee" age ...

  3. Shell变量之自定义变量、环境变量

    1:环境变量        环境变量可以帮我们达到很多功能-包括家目录的变换啊.提示字符的显示啊.运行文件搜寻的路径啊等等的那么,既然环境变量有那么多的功能,问一下,目前我的 shell 环境中, 有 ...

  4. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

  5. shell编程系列1--shell脚本中的变量替换

    shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹 ...

  6. Shell系列(10)- bash环境变量(3)

    环境变量与用户自定义变量的区别 环境变量是全局变量,用户自定义变量是局部变量. 用户自定义变量只在当前的 shell 中生效,环境变量在当前 shell 和这个 shell 的所有子 shell 中生 ...

  7. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  8. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  9. shell编程基础(转载)

    Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...

  10. shell编程基础进阶

    为什么学习shell编程 shell脚本语言是实现linux/unix 系统管理机自动化运维所必备的重要工具,linux/unix系统的底层及基础应用软件的核心大部分涉及shell脚本的内容.每一个合 ...

随机推荐

  1. qt_文本编辑器实现_附带详细注释和源码下载

    源码下载: 链接: http://pan.baidu.com/s/1c21EVRy 密码: qub8 实现主要的功能有:新建,打开,保存,另存为,查找(查找的时候需要先将光标放到最下面位置才能查全,不 ...

  2. javaWeb四大域对象

    servletContext Request HttpSession pageContext 详细参考:http://www.tuicool.com/articles/NJfyMrn

  3. Bootstrap学习(一)

    Bootstrap就是对jQuery的一次再开发,所以jQuery脚本引用必须在bootstrap脚本之前. 链接:http://www.cnblogs.com/vvjiang/p/5189804.h ...

  4. js对象

    js中除数字.字符串.布尔值.null值.undefined之外都是对象. 对象是属性的容器,属性包含属性名和值,属性名可以是包括空字符串在内的任意字符串(个人想法还是使用js标识符好,省的麻烦),值 ...

  5. hdu 5585 Numbers

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5585 思路:对于2和5只须看最后一位数,对于三看所有位的数字之和就行 #include<stdi ...

  6. jQuery – 3.JQuery的Dom操作

    3.1 JQuery的Dom操作     1.使用html()方法读取或者设置元素的innerHTML    2.使用text()方法读取或者设置元素的innerText     3.使用attr() ...

  7. 重温WCF之WCF传输安全(十三)(1)前期准备之证书制作(转)

    转载地址:http://www.cnblogs.com/lxblog/archive/2012/09/12/2682372.html 一.WCF中的安全方式 说到安全就会涉及到认证,消息一致性和机密性 ...

  8. Spell checker

     Spell checker Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

  9. 如何观察JS的事件队列的执行划分

    也就是说,不同的操作函数,操作符,JS将其放入事件队列是不一样的... 比如: 外部函数和内部函数,就是分两次放入事件循环的尾端的. 比如,多个操作符组成的链式操作,也有可能是放不同的操作批次进入事件 ...

  10. babyClock 1.0发布(Android2.2以上)

    [总体说明] babyClock是以天为单位,进行提醒的小工具:可以设置多个闹钟,每个闹钟又按照频率分为多个提醒:过期后自动设置到明天该时刻进行提醒. 一个闹钟包含时间区段.提醒频率:进入时间区段时, ...