精华内容
下载资源
问答
  • 主要区别: 1.作用域不同:全局变量的作用域为整个程序,它的声明后面的各个部分都可以发生作用,而局部变量仅仅为定义的某个...利用vi编辑器创建shell脚本,例如我命名为rose,如下图 进入脚本后,点击a,到插入界...

    主要区别:

    1.作用域不同:全局变量的作用域为整个程序,它的声明在后面的各个部分都可以发生作用,而局部变量仅仅为定义的某个函数。且局部变量只能在局部进行使用。
    2.优先级不同:局部变量优先于全局变量。
    3.生命周期不同:全局变量随程序的销毁而销毁,而局部变量受局部函数的影响,函数退出就没啦。

    详细步骤:

    利用vi编辑器创建shell脚本,例如我命名为rose,如下图
    在这里插入图片描述
    进入脚本后,点击a,到插入界面
    输入#!/bin/bash
    如下图:
    在这里插入图片描述
    如此可以编辑我们的脚本啦!
    首先我们可以定义我们的全局变量:
    例如:

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
    欢迎关注微信公众号:宝藏女孩的成长日记
    让这个可爱的宝藏女孩在努力的道路上与你一起同行!
    如有转载,请注明出处(如不注明,盗者必究)

    a=”我是昆凌”
    b=”我是古力娜扎”
    

    在这里插入图片描述
    接下来我们可以写一个函数来试试:
    定义一个

    function fun(){
    
    local c=”我是天线宝宝”
    local d=”我是喜羊羊”
    
    echo $a
    echo $b
    echo $c
    echo $c
    }
    

    在这里插入图片描述

    然后esc退出后按:wq 保存之后,输入/bin/bash rose.sh,再回车就可以看到我们的编译结果了嘿嘿在这里插入图片描述
    这里面我们使用了全局变量,也有局部变量,在局部变量中我们可以使用全局变量,也可以使用局部变量。但是在函数外面调用函数的局部变量是调用不了的,因为局部变量仅仅为定义的某个函数。且局部变量只能在局部进行使用,例如下面的c在函数外面就编译不出来:
    在这里插入图片描述
    在这里插入图片描述
    很显然这就是全局变量和局部变量最大的区别啦!

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
    欢迎关注微信公众号:宝藏女孩的成长日记
    让这个可爱的宝藏女孩在努力的道路上与你一起同行!
    如有转载,请注明出处(如不注明,盗者必究)

    展开全文
  • 环境变量可以使得 bash shell 存储有关 shell 会话和工作环境的信息,允许内存存储数据。 bash shell ,环境变量分为:全局变量局部变量全局变量shell 会话和所有生成的子 shell 都可见。局部变量只对...

    e88691864e83990d929a5ec171fe7430.png

    环境变量可以使得 bash shell 存储有关 shell 会话和工作环境的信息,允许在内存中存储数据。


    在 bash shell 中,环境变量分为:

    • 全局变量
    • 局部变量

    全局变量对 shell 会话和所有生成的子 shell 都可见。局部变量只对创建他们的 shell 可见。


    全局环境变量

    • 变量名全部大写,以区别普通用户的环境变量
    • 查看命令: env 或者 printenv 变量名,或者 $变量名

    局部环境变量

    • Linux 默认定义了标准的局部环境变量
    • 没有命令能够只显示局部变量
    • set 命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量、用户定义变量

    用户定义变量

    设置局部用户定义变量

    如,定义 h 的值为 Hello World!。 注意,变量名、等号和值之间没有空格。

    #step1
    echo $h
    #step2
    h="Hello World!"
    #step3 使用
    echo $h

    特点:只能在定义该变量的 shell 中使用。

    设置全局环境变量

    如,定义 h 的值为 Hello World!。

    #step1
    h="Hello World!"
    #step2
    export $h
    # step3 使用
    echo $h

    特点:在子 shell 中也可以使用,子 shell 中可以修改,但不会影响父 shell 的变量值。

    删除环境变量

    如,删除上面定义的 h

    #step1
    unset h
    #step2 查看
    echo $h

    特点:如果在子 shell 中删除,只会在子 shell 中生效。在父进程依然可以用。


    默认的 shel 环境变量

    通常,bash shell 已经用一些变量定义好了系统环境。
    由于 bash shell 源于 Unix Bourne shell,因此保留了 Unix Bourne shell 的一些变量。当然还有自有的变量。详情请看纸质书籍的 p110 ~ p113 的两个表。

    设置 PATH 环境变量

    当你在 shell 中输入一个外部命令时,shell 会搜索你输入的命令。搜索的范围就是 PATH 环境变量定义好的。
    如,在我的 Ubuntu 18.04 中:

    #step1
    echo $PATH
    #结果
    /usr/local/bin/jdk-10.0.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

    目录使用冒号 : 分隔。如果你输入的命令不在 PATH 指定的任何一个目录下面,且又不是使用绝对路径的话,shell 就找不到该命令,无法执行操作。

    添加

    如,要添加 /opt/adb

    #step1
    PATH=$PATH:/opt/adb

    这时候,在任何目录都可以执行 adb 命令了。但是如果退出了 shell 或者重启系统就失效了。

    定位系统环境变量

    在你登录 Linux 系统启动一个 bash shell 时,默认 bash 会从 启动文件/环境文件 查找命令。启动文件是哪些取决于你启动 bash shell 的方式。启动 bash shell 有三种:

    • 登录时作为默认登录 shell
    • 作为非登录 shell 的交互式 shell
    • 作为运行脚本的非交互式 shell

    登录 shell

    从 5 个不同的启动文件里读取命令:

    • /etc/profile
    • ~/.bash_profile
    • ~/.bashrc
    • ~/.bash_login
    • ~/.profile

    其中 /etc/profile 是主启动文件。不同的 Linux 发行版在这里放了不同的命令。
    ~/ 下的启动文件,提供一个用户专属的启动文件。大多数的 Linux 的发行版只用到其中的一个到两个。
    shell 会按照下列的顺序,运行第一个被找到的文件,余下的则忽略:

    ~/.bash_profile
    ~/.bash_login
    ~/.profile

    ~/.bashrc 通常通过其他文件运行。


    交互式 shell

    只会检查 ~/.bashrc
    .bashrc 文件有两个作用:1.查看 /etc 下的 bashrc 文件,2.为用户提供一个定制自己的命令别名和私有脚本函数的地方。

    非交互式 shel

    系统执行 shell 脚本的时候。bash shell 会检查 BASH_ENV 来查看要执行的启动文件。如果有指定的文件 shell 就会执行,如果没有,就查看父 shell 的变量。对于不启动子 shell 的脚本,变量已经存在当前的 shell 里了。

    环境变量持久化

    在 /etc/profile.d 目录下创建一个 .sh 文件,把全局环境变量放在这里。
    在大多数发行版中,存储个人用户永久性 bash shell 变量的地方是 ~/.bashrc


    数组变量

    就是给环境变量设置多个值。如:

    mytest=(one two three four)
    #显示某个索引的值
    echo ${mytest[1]}
    #显示所有的值
    echo ${mytest[*]}
    #改变某个索引的值
    mytest[2]=second
    #删除某个值
    unset mytest[2]

    注意:数组变量在 shell 脚本编程中不常用。

    展开全文
  • 1.什么是变量(内存当中一片区域的地址)?... shell 中变量是不能永久保存系统的,必须文件声明 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问 ...

    1.什么是变量(内存当中一片区域的地址)?

    变量即在程序运行过程中它的值是允许改变的量
    变量是用一串固定的字符来标示不固定的值的一种方法
    变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息
    在 shell 中变量是不能永久保存在系统中的,必须在文件中声明
    
    变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问
    在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的
    由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用
    变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)
    特定运算的结果以及要在窗体上显示的一段数据等,简而言之,变量是用于跟踪几乎所有类型信息的简单工具
    变量声明后没有赋值的话 编译器会自动提示并赋予默认值
    
    变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息
    例如,可以创建一个名为Click Count的变量来存储用户单击Web页面上某个对象的次数
    使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值
    在VB Script中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是Variant
    

    在这里插入图片描述

    2. shell 脚本中变量的种类

    在 shell 中变量分为环境级变量、用户级变量、系统级变量这三种

    环境级变量只在当前 shell 中生效, shell 关闭变量丢失
    用户级变量写在用户的骨文件(.bash_profile)中,只针对当前用户生效,切换用户后就不再生效
    系统级变量被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效
    
    环境级变量只在当前 shell 中生效, shell 关闭变量丢失 直接在shell当中设置
    用户级变量写在用户的骨文件中,只针对当前用户生效  用户的骨文件一般都在用户的家目录下面(ls -a 查看隐藏的文件).bash_profile
    cd /etc/skel这个目录下面存放的是新建用户的骨文件,也是隐藏文件
    系统级变量被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效
    

    3.shell 脚本中变量的定义方法

    环境级,直接在shell中输入export A=1来定义变量
    用户级,编辑家目录下面的用户级文件 vim ~/bash_profile,写入export A=1来定义变量
    系统级,编辑系统的配置文件vim /etc/profile,写入export A=1来定义变量
    

    4.三种变量的设定方法

    (1)环境级变量:只针对当前shell生效

    a=2在当前shell中定义变量a=2
    

    在这里插入图片描述

    vim test.sh编辑测试的脚本
    

    在这里插入图片描述

    #!/bin/bash
    echo $a输出a的值
    

    在这里插入图片描述

    sh test.sh没有,因为当前的shell是bash(a在这个shell里面),sh这个shell里面没有a
    echo $a 可以看到a的值
    ps 可以看到当前环境是bash
    export a=1使得所有的shell环境均识别这个a的值
    sh test.sh 就可以看到a的值
    exit关闭当前的shell
    

    在这里插入图片描述

    重新打开一个shell
    sh test.sh 就没有a的值
    

    在这里插入图片描述
    (2)用户级变量,只针对当前的用户有效(写在当前用户的骨文件当中)

    ls -a 可以查看家目录下面的所有所有隐藏文件(以.开头的文件)
    

    在这里插入图片描述

    vim .bash_profile(编辑用户级的变量配置文件)
    

    在这里插入图片描述

    加入:
    export a=5
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (3)系统级的变量:写在系统的配置文件/etc/profile中,对所有的用户都生效

    vim /etc/profile(编辑系统变量的配置文件)
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    su - student(系统级和用户级两个都读,切换用户身份以及用户在的环境)
    su student(只读系统级一个,只切换用户身份)
    
    系统级和用户级之间的关系:哪个的文件被随后读取,查看的就是哪个文件里面的值
    shell的命令行也属于一个变量,也可以进行修改
    
    展开全文
  • 环境变量也称为全局变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用 环境变量可以分为自定义环境变量和bash内置的环境变量 环境变量可以命令行设置和创建,用户退出命令行时这些变量值就会丢失...

    1. 环境变量的概念

    环境变量也称为全局变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用

    环境变量可以分为自定义环境变量和bash内置的环境变量

    环境变量可以在命令行中设置和创建,用户退出命令行时这些变量值就会丢失,想要永久保存环境变量,可以写在文件中

    2. 创建环境变量

    1)export 变量名=value

    export NAME=hello
    echo $NAME
    

    2)declare -x 变量名=value

    declare -x HH=haha
    echo $HH
    

    3)变量名=value;export 变量名

    XX=xixi;export XX
    echo $XX
    

    3. 查看环境变量

    我们通常在工作中要查看一下环境变量中都配置了什么,需要做什么更改,所以我们就有了ehco或printf命令来打印查看环境变量。

    echo $HOME     #用户登录时进入的目录
    echo $UID      #当前用户的uid (也就是用户的标识,相当于人的身份证)相当于id -u
    echo $PWD      #当前工作目录的绝对路径
    echo $SHELL    #当前使用的是哪个shell
    echo $USER     #当前用户是哪个
    

    在这里插入图片描述

    4. 取消环境变量

    unset 变量名       #变量名前不加$符号
    如果写在了文件中,则需要手动在文件中删除
    

    5. 定义全局变量

    想要永久保存环境变量,可以写在文件中:

    全局文件为/etc/profile对所有用户有效;

    用户文件为~/.bash_profile 仅对指定和用户有效

    用户环境变量配置:.bashrc.bash_profile

    全局环境变量配置:/etc/profile/etc/bashrc(推荐)、/etc/profile.d/如果想要在登陆后初始化或者显示加载内容,把脚本放在该目录下即可。不需要加执行权限!!!

    如果要列出系统中所有的环境变量,可使用env命令

    在文件中写完后,需要source命令去继承
    如:

    source /etc/profile
    

    6. 环境变量知识小结

    在这里插入图片描述

    展开全文
  • 如何在shell脚本使用变量

    万次阅读 2018-05-10 10:52:51
    本文参考LinuxTechi网站这篇文章:How to use variables in shell Scripting(by Pradeep Kumar · Published July 27, 2014 · Updated August 4, 2017 )整理译出。 系统定义的变量 System Defined ...
  • Shell中的环境变量

    2021-01-20 12:41:00
    环境变量也称为全局变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用 环境变量可以分为自定义环境变量和bash内置的环境变量 环境变量可以命令行设置和创建,用户退出命令行时这些变量值就会丢失...
  • bash-yaml:读取yaml文件并bash中创建变量
  • Shell编程之变量

    2021-03-08 21:10:15
    本文主要对Shell中变量进行简单总结,另外本文所使用的Linux环境为CentOS Linux release 8.1.1911,所使用的Shell为bash 4.4.19(1)-release。
  • 环境变量也称为全局变量,可以在创建他们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可以分为自定义环境变量和bash内置的环境变量,环境变量可以命令行设置和创建,用户退出命令行时这些变量值就会...
  • Shell中变量变量的数值计算

    万次阅读 2019-02-12 14:39:36
    环境变量也可叫全局变量,可以在创建他们的shell及派生出的子shell中使用(无需定义,直接可以使用,如:$UID) 相关命令: set :输出所有变量 env:只显示全局变量 declare:输出所有变量,函数,整数等 ...
  • Shell语言变量和引用

    千次阅读 2019-06-05 21:33:22
    变量 简介 变量就是程序设计语言的一个可以变化的量,当然,可以变化的是变量的值。变量几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。...在Shell中变量名可以由字母、数字或者下划线组成,并...
  • shell脚本(定义--创建--变量

    千次阅读 2018-04-25 15:27:25
    提前写好可执行语句,能够完成特定任务的文件顺序,批量化处理解释型程序常见的脚本Bash ShellPython/Perl/RubyJSP/PHP/ASP/CGIJavaScript创建shell脚本的三个步骤1.新建文本文件2.添加可以执行的脚本语句(命令行)...
  • 环境变量也成为全局变量,可以在创建他们的shell以及其派生出来的任意子进程shell中使用,环境变量又可以分为自定义环境变量和bash内置环境变量,环境变量可以命令行这只和创建,但是用户退出命令行时这些变量值...
  • shell脚本之shell内部变量和环境变量

    万次阅读 2018-06-16 10:24:28
    这篇博客介绍:1、部分常用的内部变量2、环境变量变量的分类可以参考:点击打开链接1、部分常用的内部变量: ⑴ #  说明:$#变量是命令行参数或位置参数的数量 ⑵ -  说明:$-变量是传递给shell脚本的执行标志 ...
  • shell编程——变量的定义

    千次阅读 2018-06-05 11:10:07
    shell是一个解释性语言,我们用它主要写一些自动化的脚本,所以shell编程并不复杂,它的循环结构的理论相对比较简单,同样也实现不了多复杂的程序,但是它唯一的难度就是它与系统结合的非常密切,所以写的shell...
  • Shell 编程中变量的作用、类型

    千次阅读 2020-08-20 08:24:41
    Shell 变量的作用、类型一、Shell 变量的作用、类型二、自定义变量1.定义新的变量2.查看和引用变量的值3.变量赋值的特殊操作4.设置变量的作用范围5.数值变量的运算三、特殊的 Shell 变量 一、Shell 变量的作用、类型...
  • 不同的作用域,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他们都叫小明(对应于变量名),但是由于所在的班级(对应于作用域)不同,所以不会造成混乱。但是如果同一...
  • 主要介绍了shell脚本实现监控shell脚本的执行流程及变量的值本文使用shell完成对执行过程条件语句变量的变化的监控和整个程序的执行流程的观察功能,需要的朋友可以参考下
  • unset命令用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。 语法格式:unset[参数] 常用参数: -f 仅删除函数 -v 仅删除变量 参考...
  • Shell脚本定义变量变量的引用

    千次阅读 2020-03-01 00:36:33
    一、定义变量 variableName="value" 注意:变量名和等号之间不能有空格,这和编程语言都不一样。 同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)...
  • shell 动态变量

    千次阅读 2019-07-02 09:19:38
    shell 的动态变量名 avr_0= avr_1= avr_2= avr_3= avr_4= avr_5= avr_6= avr_7= # 赋值 avr_x = for i in $(seq 0 7) do eval avr_${i}=${i} done # 取值 for i in $(seq 0 7) do tmp=$(eval echo '$'avr_${i})...
  • Shell:环境变量

    千次阅读 2016-05-04 21:59:38
    大家初次接触到Linux系统,相信环境变量会让你头疼不已。习惯了Windows设置PATH的你,被Linux上各种文件可以设置环境变量头疼不已!对于可以当前用户执行的命令,但是sudo就无法执行困惑不堪!下面,我们就...
  • shell-变量定义、变量赋值

    千次阅读 2020-09-14 15:44:02
    Shell ,当第一次使用某变量名时,实际上就定义了这个变量创建和设置变量的语法: varName=varValue 如果没有给出变量值,则变量会被赋予一个空字符串。 注意,赋值操作符“=”的周围不要有任何空格...
  • shell变量,具体的

    2016-12-22 10:07:46
    shell命令行
  • 用户级的变量(优先级高,文件后被加载) ./profile定义 系统级的变量 /etc/profile定义 环境级的变量 a=1 export a=1 1.变量:以字母开头字母、数字和_的组合 a=1 设定之后子进程不能访问(如 sh westos...
  • 局部变量在创建它们的shell中可用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程使用。有些变量是用户创建的,其他的则是专用shell变量变量名必须以字母或下划线字符开头。其余的字符可以是...
  • Shell

    千次阅读 多人点赞 2019-08-16 22:01:18
    Shell 介绍 shell是一个用c语言编写的程序,他被称为用户使用linux的桥梁 shell即是一种命令语言,又是一种程序语言 shell脚本是一种为shell编写的脚本程序 Shell运行环境和运行方式 shell编程和java,...
  • shell-02-shell变量变量值的输出

    千次阅读 2020-09-02 13:04:24
    在创建它们的shell脚本使用 3.环境变量(一般都是定义好的) 可以在创建shell和其派生出来的子进程使用 4.输出变量的简单案例 #!/bin/bash #定义并输出变量值 aa="12345" name="咸鸭蛋" echo "$aa $name" ...
  • 调用其他shell中变量 ../other.sh #第一种方法 source ./subscript.sh #第二种方法 调用.ini文件变量 参考 【CSDN—从ini文件读取参数】 【Shell中要如何调用别的shell脚本,或别的脚本变量,函数】 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 241,392
精华内容 96,556
关键字:

如何在shell中创建变量