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 ...
随机推荐
- maven install 报错 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
1.控制台打印信息 [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.cqupt.mauger:R ...
- 后RCNN时代的物体检测及实例分割进展
https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650736740&idx=3&sn=cdce446703e69b ...
- js模块化编程之CommonJS和AMD/CMD
js模块化编程commonjs.AMD/CMD与ES6模块规范 一.CommonJS commonjs的require是运行时同步加载,es6的import是静态分析,是在编译时而不是在代码运行时.C ...
- html固定表头,表单内容垂直循环滚动
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8 ...
- java Web工程师面试题集绵
一.Java 基础 1.JDK .JRE 和JVM关系是什么? 答:A. JDK(Java Development Kit)即Java开发工具包,包含编写Java程序所必须的编译.运行等开发工具以及J ...
- ES6 Promise 全面总结
转载:点击查看原文 ES6 Promise对象 ES6中,新增了Promise对象,它主要用于处理异步回调代码,让代码不至于陷入回调嵌套的死路中. @-v-@ 1. Promise本质 Promise ...
- C++ 内链接 外链接
编译的时候(假如编译器是VS),是以源文件cpp文件为单位,编译成一个个的obj文件,然后再通过链接器把不同的obj文件链接起来.如果一些变量或函数的定义是内连接的话,链接器链接的时候就不会拿它们去与 ...
- 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)
论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...
- LVS(IPVS)了解
从来都只是看文章,现在手工作一下. 参考URL: https://blog.csdn.net/langyue919/article/details/80935197 https://www.cnblo ...
- 执行Spark运行在yarn上的命令报错 spark-shell --master yarn-client
1.执行Spark运行在yarn上的命令报错 spark-shell --master yarn-client,错误如下所示: // :: ERROR SparkContext: Error init ...