Linux Shell基础篇——变量
一、Shell中的变量
注:这里所说的Shell是Bash Shell,我姑且统称为Shell。
Shell中的变量分为用户自定义变量、环境变量、位置参数变量、预定义变量。在Shell中,变量的默认类型都是字符串型的,如果要进行数值运算,则必须指定变量类型为数值型。
(1)一些注意事项
变量命名可以由字母、下划线和数字组成,但不能以数字开头,变量名严格区分大小写。
变量用等号(=)赋值,等号左右两侧不能有空格。
变量的值如果有空格,需要使用单引号或双引号包括。可以在变量值中使用转义符"\"。
如果需要增加变量的值,那么可以进行变量值的叠加。此时需要用双引号,即"$变量名"或用${变量名}的方式使用。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。如果使用变量进行数学运算,则可以使用expr命令或$[]将数学表达式包含起来。
环境变量名建议大写,便于区分。
(2)名词解释
用户自定义变量:顾名思义,就是用户自己定义的变量。
环境变量:用来存储有关shell会话和工作环境或操作系统环境的信息。环境变量的这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们,一次定义,任何shell脚本都可以访问。环境变量有分为两类,全局环境变量和局部环境变量。全局环境变量对于当前shell和其所有生成的子shell都是可见的。局部环境变量则只对创建它们shell可见。
位置参数变量:顾名思义,这种变量根传递参数的位置有关。变量名不能自定义。
预定义变量:是shell已经定义好的变量,变量名不能自定义,变量的作用都是不变的。
Linux Shell基础篇——变量的更多相关文章
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- Linux Shell基础 位置参数变量、预定义变量
位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...
- Linux Shell基础 环境变量
环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- linux shell脚本之-变量极速入门与进阶(1)
1,如果创建shell脚本? 使用任意文本编辑软件,一般为vim,创建.sh结尾的文件,在文件的最开头用 #!/bin/bash 注明shell的类型 如: ghostwu@dev:~/linux/s ...
- Linux入门基础篇
Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...
随机推荐
- 洛谷 P2664 树上游戏 解题报告
P2664 树上游戏 题目描述 \(\text{lrb}\)有一棵树,树的每个节点有个颜色.给一个长度为\(n\)的颜色序列,定义\(s(i,j)\) 为 \(i\) 到 \(j\) 的颜色数量.以及 ...
- Linux用户创建及权限管理
作业一: 1,新建用户natasha,uid为1000,gid为555,备注信息为“master” useradd natasha vim /etc/passwd ...
- mobiscroll 案例git
https://github.com/zhoushengmufc/iosselect
- 「Django」学习之路,持续更改
一.setting设置 1.设置 局域网可以部署连接 ALLOWED_HOSTS = ['*.besttome.com','192.168.1.100'] 2.static配置 STATIC_URL ...
- Java中String的替换函数:replace与replaceAll的区别
例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]"; 要将里面的"kk"替换为++,可以使用两种方法得到相同的结果 r ...
- C/C++预处理宏的总结
1.定义顺序的无关性 #define PI 3.14 #define TWO_PI 2*PI 这两句谁前谁后无所谓,因为预处理器不断迭代来实现宏替换,直到源文件中没有宏了才停止. 2. 宏变量变成字 ...
- HDU 6206 青岛网络赛1001 高精度 简单几何
给出的数据1e12规模,常规判点是否在圆范围内肯定要用到半径,求得过程中无法避免溢出,因此用JAVA自带的浮点大数运算,和个ZZ一样比赛中eclipse出现问题,而且太久没写JAVA语法都不清楚变量忘 ...
- Codeforces Beta Round #34 (Div. 2) E. Collisions
E. Collisions time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- AES Java加密 C#解密 (128-ECB加密模式)
在项目中遇到这么一个问题: java端需要把一些数据AES加密后传给C#端,找了好多资料,算是解决了,分享一下: import sun.misc.BASE64Decoder; import sun.m ...
- 30款基于 jQuery & CSS3 的加载动画和进度条插件
我们所生活每一天看到的新技术或新设计潮流的兴起,Web 开发正处在上升的时代.HTML5 & CSS3 技术的发展让 Web 端可以实现的功能越来越强大. 加载动画和进度条使网站更具吸引力.该 ...