【转】shell学习笔记(二) ——shell变量
在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多。
1 系统变量
变量名 含义 $# 命令行参数的个数 $n $1表示第一个参数,$2表示第二个参数,以此类推 $0 当前程序的名称 $? 前一个命令或许或函数的返回码 $* 以“参数1 参数2 。。。”形式保存所有参数 $@ 以“参数1”“参数2”。。。形式保存所有参数 $$ 本程序的(进程ID号)PID $! 上一个命令的PID
2 环境变量
当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些参数,例如LOGNAME变量。环境变量可以在~/.bash_profile或者~/.bashrc中设置,
下面列举了常见的环境变量:
变量名 含义 PATH 命令搜索路径,以冒号为分隔符。注意与DOS下不同的是当前目录不在系统路径里 HOME 用户home目录的路径名,是cd命令的默认参数 COLUMNS 定义了命令编辑模式下可使用命令行的长度 EDITOR 默认的行编辑器 VISUAL 默认的可视编辑器 FCEDIT 命令fc使用的编辑器 HISTFILE 命令历史文件 HISTSIZE 命令历史文件中最多可包含的命令条数(默认1000条) HISTFILESIZE 命令历史文件中包含的最大行数 IFS 定义shell使用的分隔符 LOGNAME 用户登录名 指向一个需要shell监视其修改时间的文件。当该文件修改后,shell将发消息You have mail给用户 MAILCHECK shell检查MAIL文件的周期,单位是秒 MAILPATH 功能与MAIL类似,但可以用一组文件,以冒号分隔,每个文件后可跟一个问号和一条发向用户的消息 SHELL shell的路径名 TERM 终端类型 TMOUT shell自动退出的时间,单位为秒,若设为0则禁止shell自动退出 PROMPT_COMMAND 指定在主命令提示符前应执行的命令 PS1 主命令提示符 PS2 二级命令提示符,命令执行过程中要求输入数据时用 PS3 selcet的命令提示符 PS4 调试命令提示符 LD_LIBRARY_PATH 寻找库的路径,以冒号分隔
当然也可以定义新的环境变量,使用export命令即可。
#export NEW_ENV_VAR="This is a new environment variable"
#echo "$NEW_ENV_VAR"
This is a new environment variable
3 用户变量
用户变量最长用到的变量,使用也十分简单。用户定义的变量名必须由字母数字及下划线组成,并且变量名的第一个字符不能为数字。
//以下都是不合法的变量
abc#123 //变量名中不能包含除字母数字及下划线以外的字符
123aBc //第一个字符不能为数字
4 变量的赋值和使用
shell 下的变量和C中的变量不同,无需声明即可使用,赋值同时即声明了变量。对于用户变量,用户可按如下方法赋值。
variable_name=value
eg:season=Winter
【赋值时,变量和等号之间不要有空格,等号和值之间也不要有空格,否则shell不会认为变量被定义。】
同时,shell也允许在变量间进行相互赋值。引用变量时,需要在变量名前面加$符号。
eg:current_season=$season
使用变量时,需要在变量名钱加$符号,例如echo $season。当然使用时也会遇到一些比较特殊的情况,就是变量名包含在其他字符串中,这时就需要用{}将变量名括起来。
#a=good
#echo “${a}morning”【为了避免变量名上造成混淆,建议总是使用{}将变量名括起来】
输出结果为:goodmorning
若要重置某一变量,即可使用unset命令清空某一变量的赋值。另外,如果在赋值后不希望改变变量,使其类似于常数,则可以使用readonly命令将其设为只读。另外,shell的变量默认是全局作用的,如果需要在一定范围内生效,则需要加上local限制。例如local a将设置a为局部变量。
5 运算类(其中包括字符和数值)
-n表示non-zero非空串时为真。
——shell变量">
——shell变量">
【转】shell学习笔记(二) ——shell变量的更多相关文章
- 鸟书shell 学习笔记(二) shell中正則表達式相关
通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...
- Go语言学习笔记二: 变量
Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...
- Shell学习(二)——变量和基本数据类型
参考博客: [1]LinuxShell脚本--变量和数据类型 [2]shell只读变量删除 一.变量 定义变量的语法 定义变量时,变量名和变量值之间使用"="分隔,并且等号两边不能 ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- Shell学习笔记之shell脚本和python脚本实现批量ping IP测试
0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- Shell学习笔记二
一.调试脚本 调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本运行信息.调试信息可以帮你弄清楚是什么原因使得程序发生崩溃或行为异常.每位系统程序员都应该了解 ...
- shell 学习笔记二
一.break命令 break命令允许跳出所有循环(终止执行后面的所有循环). 下面的例子中,脚本进入死循环直至用户输入数字大于5.要跳出这个循环,返回到shell提示符下,就要使用break命令. ...
- hbase 学习笔记二----shell
Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统. Hbase不同于一般的关系型数据库 ...
- Shell学习笔记(二)
if 语句 最简单的用法就是只使用 if 语句,它的语法格式为: if condition then statement(s) fi condition是判断条件,如果 condition 成立(返回 ...
随机推荐
- 在地铁上看了zabbix 的书发现 "报警执行远程命令"
在地铁上看了zabbix 的书发现 "报警执行远程命令" 远程命令整个过程: items -> triggers -> action -> remote com ...
- mongodb 的进库操作
mongo show dbs use xxx show collections db.xxx.find() db.users.update({ "xxx" : ObjectId( ...
- 微信小程序demo-环球小镇
微信小程序-环球小镇说明:实现了环球小镇(huanqiuxiaozhen.com)移动端商城客户端部分功能,包括首页,分类,购物车,帐户,品牌列表,商品详情等功能. 项目下载:http://bb ...
- Effecvtive Java Note
代码应该被重用,而不是被拷贝 同大多数学科一样,学习编程的艺术首先要学会基本的规则,然后才能知道什么时候可以打破这些规则 创建和销毁对象 1.考虑用静态工厂方法代替构造器. 优势:有名称.不必再每 ...
- Java与算法之(9) - 直接插入排序
直接插入排序是最简单的排序算法,也比较符合人的思维习惯.想像一下玩扑克牌抓牌的过程.第一张抓到5,放在手里:第二张抓到3,习惯性的会把它放在5的前面:第三张抓到7,放在5的后面:第四张抓到4,那么我们 ...
- CTF---密码学入门第六题 古典密码
古典密码分值:10 来源: 北邮天枢战队 难度:易 参与人数:5115人 Get Flag:1549人 答题人数:1783人 解题通过率:87% 密文内容如下{79 67 85 123 67 70 8 ...
- hackerrank Ticket
传送门 题意:n个人排队买票,要把他们拆成k条队到k个窗口买,可以有队伍为空,每条队的顺序保持拆之前的顺序.如果某人和他前一个人买的票相同,就可以打八折,求最小花费. 题解:拆成k条队意味着只有[n- ...
- [51nod1614]刷题计划
大赛将至,摆在你面前的是n道题目,第 i(1 ≤ i ≤ n) 道题目能提升 ai 点智力值,代码量为 bi KB,无聊值为 ci ,求至少提升m点智力值的情况下,所做题目代码量之和*无聊值之和最小为 ...
- [Codeforces 696D] Legen...
题目大意: 给出一些匹配串,要造一个长度不超过L的字符串,每个匹配串有自己的价值,匹配串每次出现在字符串里都会贡献一次价值...要求可能得到的最大价值. 匹配串总长不超200,L<=10^14, ...
- cf_514C(字符串哈希)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121897#problem/G Watto and Mechanism Time ...