• Shell脚本编程(一) —— 变量定义(用户自定义变量、位置变量、预定义变量、环境变量)


            目录

    1、用户自定义变量

    2、位置变量(命令行变量)

    3、预定义变量

    4、环境变量(一次性全局变量)

    5、永久全局变量(重启以后依然存在的变量)

    (1) 本地变量文件

    (2) 全局变量文件


    1、用户自定义变量

    定义变量: 变量名=value              

    读取变量内容:$变量名 或者 ${变量名}

    删除变量: unset 变量名

    变量命名:

    • 建议使用大写来和命令区分开,比如 test、echo、ls等命令都是小写
    • 字符串要用引号
    1. // variable.sh
    2. NAME='gzx'
    3. AGE=17
    4. echo name: $NAME and age: $AGE
    5. unset NAME

    测试脚本的时候,需要给脚本添加运行权限,如果你是这个.sh文件的创建者,在命令行输入下面两者中的一种

    1. # 如果是可以创建者、组、其他都加上执行权限
    2. chmod a+x variable.sh
    3. # 如果只是给创建者加上执行权限
    4. chmod u+x variable.sh

     测试结果如下:

    注意:使用变量时的本质是替换,可以拼接其他内容,比如

    1. DIR=~/workspace/dist
    2. rm -rf $DIR/test

     

    2、位置变量(命令行变量)

    位置变量不需要显式去定义变量名,其实是根据命令行参数的位置来读取对应的内容的。Shell脚本的内容如下:

    1. # 打印两个命令行参数的内容
    2. # $1 表示引用命令行参数的第一个参数
    3. # $2 表示引用命令行参数的第二个参数
    4. echo first param: $1 and second param: $2

    命令行输入如下:

    ./variable.sh gzx 17

    3、预定义变量

    预定义变量指的是系统已经内置了一些变量,我们只需要直接使用 $符号来引用。常见预定义变量的引用如下:

    • $0         脚本名
    • $*         所有的命令行参数
    • $@       所有的命令行参数
    • $#        命令行参数的个数
    • $$        当前进程的PID
    • $!         上一个后台进程的PID(命令行指令 & 表示让进程后台运行)
    • $?        上一个命令的返回值,0代表成功
    1. # variable.sh
    2. echo '脚本名:'$0
    3. echo '参数的个数:'$#
    4. echo '当前进程的PID:'$$
    5. echo '上一个命令的返回值:'$?
    6. # 命令行输入
    7. linux@linux:~/Templates$ ./variable.sh aaa bbb
    8. 脚本名:./variable.sh
    9. 参数的个数:2
    10. 当前进程的PID:3436
    11. 上一个命令的返回值:0

    4、环境变量(一次性全局变量)

    环境变量在父Shell中可以被使用,在子Shell中也可以被使用(子Shell会拷贝父Shell的环境)。需要注意的是,环境变量仅仅只是本次登录有效,重启以后,环境变量会消失

    • 语法格式:export  变量名=value
    • 引用环境变量:$变量名 或者 ${变量名}

    下面来测试一下环境变量是否在任何地方都可以被使用,首先在家目录下添加一个环境变量

    linux@linux:~$ export NAME='gzx'

    然后换一个目录,在命令行打印环境变量

    1. linux@linux:~/Templates$ echo $NAME
    2. gzx

    修改 之前的.sh脚本来打印环境变量

    1. # variable.sh
    2. echo $NAME
    3. # 命令行输入
    4. linux@linux:~/Templates$ ./variable.sh
    5. gzx

    5、永久全局变量(重启以后依然存在的变量)

    Linux环境下的变量类型大致有三种,分别是本地变量、全局变量以及用户自定义的变量

    • 本地变量:只有当前用户可以使用的变量,保存在家目录下的 .bash_profile、.bashrc 文件中
    • 全局变量:所有用户都可以使用的变量,保存在 /etc/profile、/etc/bashrc 文件中

    当变量直接写入本地变量文件或者全局变量文件的时候,此时即便是重启虚拟机,这个变量也会一直存在。下面介绍一下本地变量和全局变量的写入方式

    (1) 本地变量文件

    向 家目录下的 .bashrc 中写入一个变量NAME

    1. # .bashrc 文件
    2. NAME='gzx'

    (2) 全局变量文件

    向 /etc/profile 文件中写入一个变量NAME

    1. # .bashrc 文件
    2. export NAME='gzx'
  • 相关阅读:
    docker网络模式和数据管理
    Nacos高可用集群
    leetcode数学思想
    6种限流实现,附代码![通俗易懂]
    rk版本编译系统
    前端 JS 经典:LRU 缓存算法
    鸿蒙应用开发-第二章-JS逻辑分支
    Element组件案例 Vue路由 前端打包部署步骤
    编辑器的一些碎碎念
    前缀和代码模板
  • 原文地址:https://blog.csdn.net/challenglistic/article/details/127877984