前言

简单介绍一下shell的变量。

正文

  1. 变量的定义

变量名的命名规则

  1. 字母、数字、下划线

  2. 不以数字开头

  3. 变量的赋值

在赋值的时候不能出现空格 a =123,在等号前面有一个空格,那么会报错。

这是因为空格之后当做另外一条命令。

然后可以使用let 进行复制,let a=10+20 这个可以进行计算复制。

同样如果想要命令赋值,可以这样 l=ls,那么后面l就表示了ls的意思。

将命令结果赋值给变量,使用$()或者``.

使用let c=$(ls -l /etc)

变量有空格等特殊字符可以包含在""或者''中。

  1. 变量的引用

例子:

string1="hello word"
echo ${string1}
或者
echo $string1
  1. 变量的作用范围

变量的作用范围,默认为当前的shell为变量的作用范围。

这里有一个例子,当复制为a=1,然后使用bash,开启了一个子shell,然后发现无法访问a了,说明子shell和父shell不互通变量。

那么如果想两个脚本变量互通怎么办?source x.sh,这样就可以了。

  1. 系统环境变量

那么如果想让子shell和父shell互通变量怎么办?可以使用export来实现。

export 其实这就全局了的意思了,那么如果用完之后最好unset去删除。

这其实就是环境变量了,那么可以通过env来查看一下。

说起环境变量,那么$Path 是比较重要的,可以自我了解一下。

然后还有一个就是ps1了。

这个就是我们显示的了。

预定义变量: $?、$$、$0

就简单介绍一下这三个。

$? 表示上一条命令是否正确执行,正确的就是0了,其他都是错误的。

$$ 表示当前进程的pid

$0 为当前进程的名称:

位置变量:$1 $2 $3

这些表示的是第几个变量的意思。

然后关于默认值的问题:${2-_}

这个意思是如果2没传的话,那么默认就是_。

  1. 环境变量配置文件

配置文件有:

  1. /etc/profile

  2. /etc/profile.d/

  3. ~/.bash_profile

  4. ~/bashrc

  5. /etc/bashrc

这里有很多配置文件,但是这些文件还是有区别的。

比如在etc目录下的,那么就是所有用户通用的了。

那么这里可以看到有profile的,也有没有profile的。

su [user]切换到其他用户,但是不切换环境变量,su - [user]则是完整的切换到新的用户环境。

如果使用,su - [user],那么切换的时候会加载/etc/profile ~/.bash_profile ~/bashrc /etc/bashrc 执行顺序也是如此,这个还是比较关键的,毕竟后面的执行顺序要大于前面的。

如果使用su [user] 那么只会加载~/bashrc /etc/bashrc。

通用需要了解的是当我们修改完配置后,配置是不会立即生效的,如果想让其立即生效,那么可以使用source这个命令,进行重新加载。

下一节就介绍具体的语法了。

重新点亮shell————变量[三]的更多相关文章

  1. Linux Shell系列教程之(三)Shell变量

    本文是Linux Shell系列教程的第(三)篇,更多shell教程请看:Linux Shell系列教程 Shell作为一种高级的脚本类语言,也是支持自定义变量的.今天就为大家介绍下Shell中的变量 ...

  2. 三、Shell变量类型和运算符

    一.Shell变量的应用 1.Shell变量的种类     ·用户自定义变量:由用户自己定义.修改和使用     ·预定义变量:Bash预定义的特殊变量,不能直接修改     ·位置变量:通过命令行给 ...

  3. Linux set、env、declare、export显示shell变量的区别

    目录 Linux中 set.env.declare.export显示shell变量的区别 1. shell局部变量 2. 用户的环境变量 显示shell变量 declare 命令 export 命令 ...

  4. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  5. awk使用shell变量

    awk使用shell变量  (可以计算浮点数) 其实在awk里,是不能直接使用shell变量的 方法是:awk -v 选项让awk 里使用shell变量 TIME=60 awk -v time=&qu ...

  6. Linux shell 变量 数学 运算

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...

  7. shell变量定义

    http://blog.csdn.net/longxibendi/article/details/6125075 set - 读写变量语法:set varName ?value?描述:返回变量varN ...

  8. 【Shell脚本学习6】Shell变量:Shell变量的定义、删除变量、只读变量、变量类型

    Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编 ...

  9. Shell学习笔记 - Shell变量

    一.变量的命名 变量名必须以字母或下划线开头,由字母.数字.或下划线组成,变量名的长度不能超过255个字符. 二.变量的分类 1. 用户自定义变量 2. 环境变量 3. 位置参数变量 4. 预定义变量 ...

  10. 【转】shell 教程——06 Shell变量:Shell变量的定义、删除变量、只读变量、变量类型

    Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编 ...

随机推荐

  1. Java 多线程---线程优先级

    Java 实例 - 线程优先级设置 以下实例演示了如何通过setPriority() 方法来设置线程的优先级: 1 SimplePriorities.java 文件 2 public class Si ...

  2. C++ STL函数对象 仿函数

    1 //STL函数对象 仿函数 2 #include<iostream> 3 #include<string> 4 5 using namespace std; 6 7 8 / ...

  3. Git常见的面试题

    在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它.因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一.以下是一些常见的Git面试题,希望它 ...

  4. 谈谈Java的特点和优点以及选择Java的原因

    ​ 如果面试官问你:请你说说Java的特点和优点,为什么要选择Java?你该怎么回答? 得分点 Java的特点 Java与C++的区别 Java的优点 标准回答 Java是一门非常纯粹的面向对象的编程 ...

  5. 在运行程序是出现sh: 行 1: cls: 未找到命令

    在运行程序是出现sh: 行 1: cls: 未找到命令 原因是system("cls");--这是在程序中调用系统命令,但是linux识别不了.功能是清除当前的终端显示数据.找到l ...

  6. 基于AmbiqMicro-AMA3B2KK-KBR的可穿戴智能手环解决方案之心率测量源码解析

    一 前记 梳理该可穿戴产品的手环,产品,是一种成长.也是一个总结. 二 源码解析 1 初始化:这里主要初始化心率的检测间隔时间和心率值的位数. /* initialize heart rate pro ...

  7. 【stars-one】JetBrains产品试用重置工具

    原文[stars-one]JetBrains产品试用重置工具 | Stars-One的杂货小窝 一款可重置JetBrains全家桶产品的试用时间的小工具,与其全网去找激活码,还不如每个月自己手动重置试 ...

  8. docker安装kafka和zookeeper

    参考,欢迎点击原文:https://www.cnblogs.com/360minitao/p/14665845.html(主要) https://blog.csdn.net/qq_22041375/a ...

  9. 三维模型OBJ格式轻量化压缩在移动智能终端应用方面的重要性分析

    三维模型OBJ格式轻量化压缩在移动智能终端应用方面的重要性分析 三维模型的OBJ格式轻量化压缩在移动智能终端应用方面具有重要性.以下是对三维模型OBJ格式轻量化压缩在移动智能终端应用方面重要性的分析: ...

  10. 自己动手做一个批量doc转换为docx文件的小工具

    前言 最近遇到了一个需求,就是要把大量的doc格式文件转换为docx文件,因此就动手做了一个批量转换的小工具. 背景 doc文件是什么? "doc" 文件是一种常见的文件格式,通常 ...