Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解
目录
Bash变量
Bash变量注意点
用户自定义变量
环境变量
位置参数变量
预定义变量
Bash变量
- 用户自定义变量:在Bash中由用户定义的变量。
- 环境变量:这种变量中主要保存和系统操作环境相关的数据。
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
- 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
Bash变量注意点
- 1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是"2name"则是错误的。
- 2.在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
- 3.变量用等号连接值,等号左右两侧不能有空格。
- 4.变量的值如果有空格,需要使用单引号或双引号包括。
- 5.在变量的值中,可以使用"\"转义符。
- 6.如果需要增加变量的值,那么可以进行变量值得叠加。不过变量需要用双引号包含"$变量名"或用${变量名}包含。
- 7.如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含。
- 8.环境变量名建议大写,便于区分。
用户自定义变量
- 在用户当前的shell进程中使用
- 一般在 $HOME/.bash_profile 中定义。
- 也可以在命令行定义,但只在用户当前shell进程中有意义,如果在shell中启动另一个进程或退出,此值将无效。
- 变量定义:
- name="liyi"
- 变量叠加:
- name=123
- name="$name"456
- name=${name}789
- 变量的调用
- echo "$name"
- 或
- echo ${name}
- 变量查看
- set
- 变量删除
- unset name
环境变量
- 环境变量适用于所有用户进程
- 在/etc/profile中进行定义
- 在用户进程使用前,必须用export命令导出;建议环境变量都大写。
- 设置环境变量
- export 变量名=变量值
- 查看环境变量取值
- echo $var_name
- 查询变量
- env
- 删除变量
- unset变量名
- 注:该命令只是从当前用户进程中删除,不会从文件/etc/profile删除
嵌入shell变量
- 一般来讲,BASH有一些预留的环境变量名,这些变量名不能做其他用
- 途,通常在/etc/profile中建立这些嵌入的环境变量,但这不绝对,取决于用户
- shell的变量列表:
- CDPATH; EXINIT; HOME; IFS; LOGNAME; MAIL; MAILCHECK; PATH; PS1; PS2; SHELL; TERMINFO; TERM; TZ
重要环境变量详解
- PATH变量:系统查找命令的目录,当我们在执行命令时,系统会到这些目录去寻找命令,然后执行。
- 假设现在创建一个文件test.sh
- chmod 755 test.sh
- ./test.sh
- 如果你不想这么麻烦,怎么办?
- PATH="PATH":/root(后面为存放test.sh的目录)
PS1变量
默认格式:
可以定义格式的例子:
- PS1='[\u@\t\w]\$ '
- PS1='[\u@\@ \h \# \W]\$ '
- PS1='[\u@\h \W]\$ '
总结:
使用命令定义的环境变量在下次重启就不会生效。
定义永久环境变量在/etc/profile文件中定义。
位置参数变量
我刚开始听到名字的时候,我就想到了python中sys.argv[]的功能,其实位置参数变量和它很相似。
都是接收外部参数,这个参数是用户从外部输入的,第一个$0为程序本身路径,从第二个参数起为用户输入的参数。
例子
- #!/bin/bash
- echo $0
- echo $1
- echo $2
- echo $3
- #!/bin/bash
- num1=$1
- num2=$2
- sum=$(($num1+$num2))
- echo $sum
预定义变量
Shell学习之Bash变量详解(二)的更多相关文章
- Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
[Android布局学习系列] 1.Android 布局学习之——Layout(布局)详解一 2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) 3.And ...
- bash变量详解
bash变量详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家都知道Shell是一门脚本语言,脚本语言的最好的优点就是我们写的代码不需要编辑就可以直接运行,当然你也可以把它归 ...
- MySQL 5.5 服务器变量详解二(转)
add by zhj:在MySQL5.6中对一些参数有增删改,详见http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html ...
- [转载] java多线程学习-java.util.concurrent详解(二)Semaphore/FutureTask/Exchanger
转载自http://janeky.iteye.com/blog/770393 ------------------------------------------------------------- ...
- MySQL 5.5 服务器变量详解(二)
innodb_adaptive_flushing={ON|OFF} 设定是否允许MySQL服务器根据工作负载动态调整刷写InnoDB buffer pool中的脏页的速率.动态调整刷写速率的目的在于避 ...
- 轻松学习Linux之Shell文件和目录属性详解
轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...
- shell编程之awk命令详解
shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...
- 4、Ubuntu系统环境变量详解
参考:Linux公社Ubuntu系统环境变量详解 UNIX/Linux系统中的环境变量和库文件的使用方法 由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,因此我们需要了解 ...
- expect学习笔记及实例详解【转】
1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...
随机推荐
- bat如何实现图片与名字匹配重命名
背景:有一批图片按顺序截取,需要按照规定的名称进行重名命. 问题:用批处理怎么实现呢?(公司电脑手动重名时,卡的不要不要的) No1:解决:将规定的名称放入criterion.txt中,将批处理Ren ...
- mysql数据库之基本操作和存储引擎
一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...
- java String正则表达式
1.正则表达式 字符串替换, 例子; String s="131hello334thrid ".replaceAll("[a-zA-Z]"," ...
- 论坛IP地址追踪&路由器密码嗅探
一.论坛IP地址查询 1.任何应用程序部可以调用一个标准的库函数来查看给定名称的主机IP地址.类似地,系统还提供一个逆函致—给定主机的IP地址,查看它所对应的主机名.大多数使用主机名作为参数的应用程序 ...
- hdu2460 e-DCC染色缩点+暴力LCA
/* 给定一个无向图,往里面加边,问加第i条边时图中的桥数 首先肯定要求初始状态下的桥,染色缩点 每次给定的边为(u,v), 那么u->lca(u,v)->v路上的所有边都不再是桥 求LC ...
- 饮冰三年-人工智能-linux-07 硬盘分区、格式化及文件系统的管理
先给虚拟机添加一个硬盘 通过fdisk -l sdb,查看磁盘内容 通过fdisk /sdb 来操作分区 创建一个新分区 创建第二个分区 创建第三个分区 创建扩展分区 再次创建分区,其实使用的是扩展分 ...
- 类和JSP关系
404的原因.除了路径问题,还有文件放置位置.比如如果文件在web-inf下面.浏览器是访问不到的
- 51 Nod 1256 乘法逆元(数论:拓展欧几里得)
1256 乘法逆元 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K ...
- iptables-snat-dnat-设置
nat internet iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j SNAT --to-source ...
- MySQL表按月切割
按月份切割MySQL表数据: 千万级别的数据量也可在毫秒内完成切割操作 注:数据无价请提前自行备份 #!/bin/bash USERNAME=MySQL_user PASSWORD=MySQL_pwd ...