1、在Bash中,每一个变量的值都是字符串
2、查看某个进程的环境变量
cat /proc/$PID/environ | tr '\0' '\n'
3、变量赋值
3.1、var=value,注意var = value不是赋值操作,而是相等操作
3.2、若value包含任何空白字符,则必须使用单引号或者双引号
4、打印变量
[root@client02 978]# var=value
[root@client02 978]# echo $var
value
[root@client02 978]# echo ${var}
value
5、在echo或printf中若要引用变量,则要使用双引号
[root@client02 1]# fruit=apple
[root@client02 1]# echo "we have five $fruit(s)"
we have five apple(s)
6、环境变量
6.1、环境变量是未在当前进程中定义,从父进程继承过来的变量
6.2、export用来设置环境变量,设置之后,从当前shell脚本执行的任何应用程序都会继承这个变量
6.3、在给出所要执行的命令后,shell会自动在PATH环境变量所包含的目录列表中,查找对应的可执行文件
7、获得变量长度
[root@client02 1]# var=124hello
[root@client02 1]# length=${#var}
[root@client02 1]# echo $length
8
[root@client02 1]# echo ${#var}
8
8、常用环境变量
[root@client02 1]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@client02 1]# echo $HOME
/root
[root@client02 1]# echo $SHELL
/bin/bash
[root@client02 1]# echo $UID
0
9、set、env和export的区别
9.1、set显示当前shell的变量(私有变量),包括当前用户的变量,不同类的shell有不同的私有变量,bash、ksh、csh的shell私有变量都不同
9.2、env显示当前用户的变量
9.3、export显示当前导出成用户变量的shell变量
10、通过设置PS1变量可以设置Bash提示字符串
11、使用函数添加环境变量
[root@client02 ~]# prepend() { [ -d "$2" ] && eval $1=\"$2':'\$$1\" && export $1; }
[root@client02 ~]# T1=/home
[root@client02 ~]# prepend T1 /root
[root@client02 ~]# echo $T1
/root:/home
但若是T1初始值为空,结果如下
[root@client02 ~]# T1=
[root@client02 ~]# echo $T1
 
[root@client02 ~]# prepend T1 /root
[root@client02 ~]# echo $T1
/root:
需要增加一个判断,引入shell参数扩展的形式
${param:+expr}
若param有值且不为空,则使用expr的值
[root@client02 ~]# prepend() { [ -d "$2" ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1; }
[root@client02 ~]# T1=
[root@client02 ~]# prepend T1 /root
[root@client02 ~]# echo $T1
/root

Shell学习——变量的更多相关文章

  1. Shell学习之环境变量配置文件(三)

    Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...

  2. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  3. Shell学习小结 - 深入认识变量

    移动端访问不佳,请访问我的个人博客 变量的命名 对于初学者来说,可以简单的理解为,变量就是保存在计算机内存中的一系列的键值对. 列如: str="hello" 这里的str就是变量 ...

  4. 【转】shell学习笔记(二) ——shell变量

    在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多. 1 系统变量  变量名 ...

  5. Shell学习(二)——变量和基本数据类型

    参考博客: [1]LinuxShell脚本--变量和数据类型 [2]shell只读变量删除 一.变量 定义变量的语法 定义变量时,变量名和变量值之间使用"="分隔,并且等号两边不能 ...

  6. [Bash Shell] Shell学习笔记

    1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...

  7. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  8. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  9. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

随机推荐

  1. 初步学习XML的基本代码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. npm 包下载很慢的解决办法

    原因: 国内访问外网都很慢,甚至不能访问!安装Node时自带的npm地址默认是:http://registry.npmjs.org  三种方法: 1.通过config命令 npm config set ...

  3. Redis入门--(一)简介NoSQL

    1.什么是NoSql? 2.为什么需要NoSQL? 互联网经历了1.0和2.0的发展: web1.0 是早期新浪,雅虎等只能浏览,不能交互: 传统关系型数据库在应付web2.0这种动态网站的时候力不从 ...

  4. SpringCloud的学习记录(7)

    这一章节讲zuul的使用. 在我们生成的Demo项目上右键点击New->Module->spring Initializr, 然后next, 填写Group和Artifact等信息, 这里 ...

  5. MyBatis中sql语句

    一.select <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String&qu ...

  6. hermite 相关算法整理

    设f(x)f(x)在节点a≤x0,x1,⋯,xn≤ba≤x0,x1,⋯,xn≤b处的函数值为f0,f1,...,fnf0,f1,...,fn,设P(x)为f(x)P(x)为f(x)在区间[a,b][a ...

  7. Linux命令之查看服务进程(ps aux、ps -aux、ps -ef)的运用

    执行ps命令即可列出的是当前服务器进程的快照(时间点),如果想要实时动态的显示进程信息,就可以使用top命令. linux上进程有5种状态:  1. 运行(正在运行或在运行队列中等待)  2. 中断( ...

  8. golang实现文件上传权限验证(超简单)

    Go语言创建web server非常简单,部署也很容易,不像IIS.Apache等那么重量级,需要各种依赖.配置.一些功能单一的web 服务,用Go语言开发特别适合.http文件上传下载服务,在很多地 ...

  9. ie6下按钮下边框消失不显示的问题

    最近网站做改版,又发现一个ie6奇葩的问题,就一个很普通带边框的按钮,但在ie6中下边框不显示,ie7没有测试不知道是不是也不显示,其他浏览器正常 代码和预览效果如下: <style> b ...

  10. IOS 添加定时器(NSTimer)

    定时器 CADisplayLink:时间间隔比较小(使用时间频率高)的时候用(适合小游戏中开发) NSTimer:时间间隔比较大的时候调用(适合图片轮放的时候用) //声明定时器 @property ...