一、变量的使用

用$放在变量前面进行使用,例如:

echo $PATH

为了和别的字符隔开,可以用{}和"",例如

echo ${PATH}nic

echo "$PATH"nic

二、变量的定义规则

1. 变量名称只能是英文字母与数字,但是开头字符不能是数字

2. 变量与变量内容以=连结, 等号两边不能直接接空格符,如下所示为错误: 『myname = VBird』或『myname=VBird Tsai』

3. 变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来,但双引号内的特殊字符如 $ 等,可以保有原本的特性,而单引号内的特殊字符则仅为一般字符 (纯文本)

4. 可用\将特殊符号变成一般字符;

5. 在一串指令中,如果还需要由其他指令提供的信息,可以使用反单引号『`指令`』或 『$(指令)』。`是键盘上方的数字键 1 左边那个键,而不是单引号! 例如想要取得核心版本的设定可以这样:

echo $version`version=$(uname -r)`

6. 通常大写字符为系统默认变量,自行设定变量可以使用小写字符

7. 可以定义数组,用var[index]=content的方式定义

8. 默认定义的是字符串类型,若要定义其他类型需要用declare来定义

declare [-aixr] variable

选项与参数:

-a :将后面名为 variable 的变量定义成为数组 (array) 类型

-i :将后面名为 variable 的发量定义成为整数数字 (integer) 类型

-x :用法与 export 一样,就是将后面的 variable 变成环境发量;

-r :将发量设定成为 readonly 类型,该发量不可被更改内容,也不能 unset

三、定义环境变量

若变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量:

export PATH

四、取消变量

unset paraname

五、常用环境变量

用env可以列出目前shell环境下的所有环境变量

HOME 代表用户的家目录。

SHELL 目前这个环境使用的SHELL 是哪支程序? Linux 默认使用 /bin/bash

HISTSIZE 我们曾经下达过的指令可以被系统记录下来,而记录的『笔数』则是由这个值来设定的。

MAIL 当我们使用 mail 指令收信时,系统会去读取的邮件信箱档案 (mailbox)。

PATH 就是执行文件搜寻的路径

LANG 编码设置

RANDOM 0到32767之间的随机数

六、用set可以观察所有变量

$:本 shell 的 PID

echo $$出现的数字就是你的 PID 号码。

?:上个执行指令的回传值

如果执行正确则回传0

七、 变量的更改

变量设定方式                     说明

${变量#关键词}               若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除

${变量##关键词}             若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除

${变量%关键词}               若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除

${变量%%关键词}            若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除

${变量/旧字符串/新字符串}  若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』

${变量//旧字符串/新字符串} 若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』

变量设定方式         str 没有设定             str 为空字符串         str已设定且非空

var=${str-expr}  var=expr                var=                      var=$str

var=${str:-expr} var=expr                var=expr                var=$str

var=${str+expr}  var=                      var=expr                var=expr

var=${str:+expr} var=                      var=                      var=expr

var=${str=expr} str=expr var=expr   str不变 var=            str不变 var=$str

var=${str:=expr} str=expr var=expr  str=expr var=expr   str不变 var=$str

var=${str?expr}   expr 输出至 stderr   var=                       var=$str

var=${str:?expr}  expr 输出至 stderr   expr 输出至 stderr    var=$str

Linux学习之八——利用变量的更多相关文章

  1. Linux学习-Shell的变量功能

    什么是变量? 简单的说,就是让某一个特定字串代表不固定的内容. 变量的可变性与方便性 举例来说,我们每个帐号的邮件信箱默认是以 MAIL 这个变量来进行存取的, 当 dmtsai 这个 使用者登陆时, ...

  2. linux学习之八---Linux进程基础知识

    一.linux进程 linux是一个多用户多任务的操作系统. 多用户是指多个用户能够在同一时间使用计算机. 多任务是指linux能够同一时候运行几个任务. 进程简单来说就是执行中的程序,Linux系统 ...

  3. linux学习之八-Linux本机性能监控

    Linux 优化 1.看看磁盘有没有满(根目录有没有满).内存有没有满.CPU有没有满 查看磁盘有没有满,使用df -h  看看磁盘使用情况 查看内存使用  free -m 特别关注swap用了多少 ...

  4. linux 学习:环境变量设置

    一.临时环境变量 临时环境变量,只对当前打开的shell生效,shell关闭后,环境变量失效. 设置方法一: 分两步 MYPARA=hello export MYPARA 设置方法二:一步完成 exp ...

  5. Linux学习笔记 -- Shell 变量

    定义变量 语法: 变量名=值 myVal= 需要注意一下变量明德规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字( ...

  6. Linux学习之八-配置FTP连接Linux服务器

    配置ftp连接Linux服务器 通过配置ftp服务器,可以实现局域网内共享文件,甚至不同用户具有不同权限,需要的工具有Windows平台ftp客户端FileZilla(免费开源) 下载地址:https ...

  7. Linux学习之八--关闭firewall防火墙安装iptables并配置

    CentOS 7之后默认使用的是firewall作为防火墙,这里改为iptables防火墙,并开启80端口.3306端口. 1.关闭firewall: systemctl stop firewalld ...

  8. Linux学习之管道符、重定向、通配符、转义符、环境变量

    Linux学习之管道符.重定向.通配符.转义符.环境变量 1. 输入输出重定向 输入重定向是指把文件导入命令中. 输出重定向是指把原本要输出到屏幕的数据信息写入指定文件中. a 标准输入重定向(STD ...

  9. Linux学习Day4:管道符、重定向与环境变量

    仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...

随机推荐

  1. C# 6.0的新变化

    自动属性初始化 (Initializers for auto-properties) 以前我们是这么写的 为一个默认值加一个后台字段是不是很不爽,现在我们可以这样写 只读属性的初始化(Getter-o ...

  2. 不等高cell的搭建(一)

    一.界面搭建   1.确定开发模式      如果界面是固定的,可以用xib      界面的一些内容不固定,就用纯代码      cell用什么方式去开发(我们采用纯代码和xib结合的方式)   2 ...

  3. PostgreSQL数据库系统的进程结构

    PostgreSQL数据库系统的主要功能都集中于Postgres程序,其入口是Main模块中的main函数,在初始化数据集簇,启动数据库服务器是,都将从这里开始执行.Main模块主要的工作时确定当前的 ...

  4. G面经prepare: set difference

    给你A{1,2,3,4,4,5}, B{2,4},求A-B={1,3,4,5},很简单. visit 1 只用一个HashMap package TwoSets; import java.util.* ...

  5. C++多线程调试和测试的注意事项

    在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”.利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开 ...

  6. java 选择排序法

    public class Test3 { /**@author shaobn * @param 选择排序:将a.length - i个元素分别和第i个元素相比较,小的话就将值调换.依次递减进行排列 * ...

  7. WebForm中<%=%>与<%#%>的区别?

    1<%=%>相当于Response.Write(),是输出变量的值 2<%#%>专门用于数据绑定,可以绑定一些变量或者数据源中的信息,中间绑定是数据源的条目,若想让它起作用,必 ...

  8. paper 49:论文退稿?审稿人帮你总结了22个能避免的常见问题

    很多投稿出去的文章都是可上可下的.往往退稿的时候,审稿人提了一堆意见,说退稿.但是大家想过没有?如果能事先预测到这些意见,或者请懂行的人事先看过文章预测出意见,然后根据这些意见修改好了再投出去,说不定 ...

  9. 关于mybatis 在C#.Net中批量增,删,改

    发现很久没有更新空间里的日志了,有时候实在忙没有时间记录,有时候又觉得自己整理的不够清晰,还是缓缓在记录吧. 下面直接进入正题 对于急需方法的阅读者  可以直接转至代码以下忽略 对于数据库进行操作的类 ...

  10. linux进程自动关闭与dmesg的使用

    一些应用程序,后台服务被关掉.例如内存不足等,可能是操作系统关掉的.这些日志记录在dmesg中. 存储目录:/var/log/dmesg dmesg -T 可以将时间戳转化为可以识别的时间. | he ...