Shell变量

一)全局环境变量

全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了。另外全局变量会被子shell的同名变量覆盖。

#定义一个全局变量
export a="I want break free"
#或者
b="Sunday Morning"
export b
#删除一个全局变量
unset a

二)局部环境变量

局部环境变量只能在定义它们的进程中可见。

#注意变量名、等号、和值之间是没有空格的
c="Live Forever"
unset c

区别全局环境变量和局部环境变量其实我们只需要记住:全局环境变量作用范围多了个字shell而已。

另外关于脚本中的变量,按局部变量方式定义的在整个其范围是整个脚本文件,包括你在方法中定义的变量。要产生一个"块级作用域"的变量需要在变量定义时加上local

local d="Lucy in the sky"

三)变量的持久化

Linux下所有用户要使用的环境变量:

方案一:将变量放入/etc/profile当中--------致命缺陷:如果升级Linux系统/etc/profile文件会被更新,设置的变量不复存在。

方案二:在/etc/profile.d目录中创建一个以.sh结尾的文件,写入变量。推荐此方法。

个人用户要使用的环境变量:

放入:~/.bashrc文件

四)数组变量

#定义
array=(one tow three four)
#使用
echo ${array[]}
#three
echo ${array[*]}
#one tow three four
#删除
unset array[]
unset array[*]

五)特殊变量

1)位置参数变量

$0--------------------------------可获取当前脚本文件名,如果执行脚本时包含路径,得到的值时路径

$n---------------------------------n为数字,当n超过9时必须采用${10}形式。获取执行脚本的第n个参数

$#--------------------------------当前执行的Shell所接参数个数

$*---------------------------------获取当前脚本的所有参数,交双引号时相当于"$1 $2 $3"

$@-------------------------------不加引号时功能和不加引号的$*一样,加引号时等同于 "$1" "$2" "$3"

2)进程中的特殊状态变量

$?--------------------------------可获取上个指令执行后的返回值

$$--------------------------------执行shell脚本的进程号

六)变量的处理

1.系统内置命令

1)echo:在屏幕上输出变量  命令格式 echo args  其中arges可以是变量和字符串组合

2)eval:

命令格式:eval args

功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令。

3)exec:

命令格式: exec 命令参数

功能:在不创建新的子进程前提下,转去执行指定的命令,指定命令执行完毕后,终结该进程。

(exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境)

4)read:

命令格式: read  [参数] [变量名](该变量不能为特殊变量)
功能:从标准输入读取字符串等信息,传给shell内部定义的变量。

read -t  -p 'Pls input the num: ' num

5)shilft:

命令格式:shilft—Shilft positional parameters

功能:在程序中每使用一次shilft语句,都会使所有位置参数向左移动一个位置,最左边的变量被删除。

6)exit:

退出shell,可选定一个数字作为返回值。

2.处理变量内容

Shell脚本笔记(二)Shell变量的更多相关文章

  1. Shell脚本 (二) 变量与运算符

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 四.Shell 中的变量 1.系统变量 1.1 常用系统变量 $HOME. $PWD. $SHELL . ...

  2. 鸟书shell 学习笔记(二) shell中正則表達式相关

    通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...

  3. shell脚本(二)

              shell脚本(二)——变量 一.定义:用来存放各种数据,编程语言组成部分 变量的命名规则: 变量名由数字 字母下划线组成 必须以字母或者下划线开头 不能使用shell里面的关键词 ...

  4. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  5. shell脚本实现监控shell脚本的执行流程及变量的值

    这篇文章主要介绍了shell脚本实现监控shell脚本的执行流程及变量的值本文使用shell完成对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察功能,需要的朋友可以参考下 很多时候, ...

  6. shell脚本中特定符合变量的含义

    shell脚本中特定符合变量的含义: $#   传递到脚本的参数个数 $*    以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个 $$    脚本运行的当前进程PID号 ...

  7. Linux shell脚本笔记

    shell 命令解释器 是用来解释用户对系统的操作 使用 cat /etc/shells 可以查看 系统安装的shell Linux 启动过程: BIOS -> MBR -> BootLo ...

  8. Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

  9. shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

    shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...

  10. 备份 MySQL 的 shell 脚本(mysqldump版本) shell脚本

    #!/bin/bash # 备份 MySQL 的 shell 脚本(mysqldump版本) # 定义变量 user(数据库用户名),passwd(数据库密码),date(备份的时间标签) # dbn ...

随机推荐

  1. vue用webpack打包时引入es2015插件

    1.安装依赖包 $ npm install --save-div babel-preset-es2015 ps:babel-loader.babel-core应该是默认装好的,如果没有安装,请重新安装 ...

  2. Python推荐系统库--Surprise实战

    一.使用movieLens数据集 from surprise import KNNBasic, SVD from surprise import Dataset from surprise impor ...

  3. 【C++ Primer | 03】字符串、向量和数组

    博客链接: c++ 中 const_iterator 和 const vector<>::iterator的区别 const vector <int> ::iterator和v ...

  4. Redis的并发竞争问题

    问题描述:多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了.或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了. 一个key的值是1,本来按顺序 ...

  5. sharepoint2013 Restore-SPSite 报错,采用数据库还原

    PS C:\Users\spadmin> Restore-SPSite http://hz0xw002049:8099 -Path D:\20170731MossSiteSP.bak -Forc ...

  6. 记JS一个错误,

    在定义变量时候,如果直接定义 var obj=null;那么,在转码时候,比如转为base64,此时或出现特殊的文字(也是汉字,只是很少见少用的文字,而且,出现的文字是根据你给obj赋值决定的,) 由 ...

  7. IIS7部署报错 500.22错误 检查到这集成托管模式下不使用的ASP.NET配置

    公司的一个项目,环境为: .Net 4.0 + MVC3,部署在Windows Server 2003R2 IIS6.0上面运行正常, 迁移到新服务器Windows Server 2008R2,部署在 ...

  8. Codeforces 868F Yet Another Minimization Problem 决策单调性 (看题解)

    Yet Another Minimization Problem dp方程我们很容易能得出, f[ i ] = min(g[ j ] + w( j + 1, i )). 然后感觉就根本不能优化. 然后 ...

  9. Date类的使用

    [构造方法] 1)Date():无参构造 [代码] Date date = new Date(); System.out.println(date); 2)Date(long time):带参构造 [ ...

  10. hive中使用union出现异常数据

    select * from tbl where id=2 union select * from tbl where id =1 如果hive使用union这么查询的时候,我们会发现数据变乱了. 解决 ...