资讯专栏INFORMATION COLUMN

shell编程--bash变量

lijinke666 / 712人阅读

摘要:变量类型本地变量本地变量的作用域为整个进程。局部变量属于本地变量。在中声明变量的周期随着该进程的周期而存在。

bash变量类型

本地变量

本地变量的作用域为整个bash进程。局部变量属于本地变量。在bash中声明变量的周期随着该进程的周期而存在。
定义本地变量:set VARNAME=Jerry
引用变量:${VARNAME},括号可省略
局部变量的声明:local VARNAME=VALUE

环境变量

环境变量的作用域为当前shell进程及其子进程
声明:export VARNAME=VALUE或者VARNAME=VALUE; export VARNAME

脚本在执行时会启动一个子shell进程
命令行中启动的脚本会继承当前shell的环境变量
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量

位置变量

$1, $2, ...
shift: 对参数进行轮换,默认轮换一个参数

#!/bin/bash
#
echo $1
shift
echo $1
shift
echo $1
shift

./filetest.sh /etc/fstab /etc/inittab
    $1:/etc/fstab 
    $2:/etc/inittab 

特殊变量

$?: 上一个命令执行状态的返回值
    程序执行,可能有两类返回值:
        程序执行结果
        程序状态返回代码(0-255)
            0: 正确执行
            1-255: 错误执行。1、2、127系统预留

$#: 参数的个数
$*: 参数列表
$@: 参数列表
变量的撤销及查看

撤销变量

unset VARNAME

查看变量

set: 查看当前shell中的变量(包括环境变量和本地变量)

printenv、env、export: 查看当前shell中的环境变量
变量命名规则
1、变量与变量内容以一个等号"="来连接,如下所示:
    MyName=Dabric
2、等号两边不能直接接空格符,如下错误:
    MyName= Dabric 或 Myname=Dab ric
3、变量名称只能是英文字母与数字,但是开头字符不能时数字;
4、变量内容若有空格符可使用双引号或单引号将变量内容结合起来,但双引号内的特殊字符如$等,可以保有原本的特性,如下所示:
    var="lang is $LANG" 则echo $var 可得 lang is en_US.UTF-8
单引号内的特殊字符则仅为一般字符(纯文本),如下所示:
    var="lang is $LANG" 则echo $var 可得 lang is $LANG
    总之在bash中:
    "":弱引用,可以实现变量替换
    "":强引用,不完成变量替换
5、可以使用跳脱字符""将特殊字符(如[ENTER], $, , 空格符, "等)变成一般字符,如:
    MyName=Dab ric
6、在一串指令的执行中,还需要藉由其他额外的指令所提供的信息时,可以使用反引号"`COMMAND`"或"$(COMMAND)"。例如想要取得核心版本的设定:
    version=$(uname -r) 
    echo $version
如何进入到您目前核心的模块目录:
    # cd /lib/modules/`uname -r`/kernel
    # cd /lib/moudles/$(uname -r)/kernel
7、若改变量为扩增变量内容时,则可用"$变量名称"或${变量}累加内容,如下所示:
    PATH="$PATH":/home/bin 或 PATH=${PATH}:/home/bin
8、若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量:
    # export PATH
9、通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断;
10、取消变量的方法为使用unset:"unset 变量名称"例如取消MyName的设定:
    # unset MyName
变量可以在bash配置文件(~/.bashrc)中直接指定,保证每次登录shell该变量都存在

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33468.html

相关文章

  • SHELL(bash)脚本编程一:变量

    摘要:交互式非登录启动时,会读取并执行文件。非交互式启动时如脚本中,会继承派生出此的父的环境变量并执行环境变量的值中所指代的文件。本程序所处的进程名。称对变量进行取值的过程为 本篇开始,介绍shell脚本编程,更确切的说是bash脚本编程(版本:4.2.46(1)-release)。我们从变量开始。 和所有的编程语言一样,bash也提供变量,变量是一些用来指代数据并支持数据操作的名称。 类型...

    antz 评论0 收藏0
  • Linux shell环境的使用及脚本编程

    摘要:定义变量时,变量名不加美元符号,如注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。重新定义变量已定义的变量,可以被重新定义,如这样写是合法的,但注意,第二次赋值的时候不能写,使用变量的时候才加美元符。 介绍 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一...

    PumpkinDylan 评论0 收藏0
  • Linux shell环境的使用及脚本编程

    摘要:定义变量时,变量名不加美元符号,如注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。重新定义变量已定义的变量,可以被重新定义,如这样写是合法的,但注意,第二次赋值的时候不能写,使用变量的时候才加美元符。 介绍 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一...

    yexiaobai 评论0 收藏0
  • SHELL(bash)脚本编程二:语法

    摘要:返回值为,表示命令执行成功非,表示命令执行失败。复合命令将在中执行注意赋值语句和内置命令修改状态不能影响当父,返回值是的返回值。此种命令的返回值取决于条件表达式的结果,结果为,则返回值为,结果为,则返回值为。 本文开始正式介绍shell脚本的编写方法以及bash的语法。 定义 元字符 用来分隔词(token)的单个字符,包括: | & ; ( ) < > space tab toke...

    CarlBenjamin 评论0 收藏0
  • Linux_《Linux命令行与shell脚本编程大全》第六章学习总结

    摘要:环境变量定义了用于进行命令和程序查找的目录。全局环境变量可以在对其作出定义的父进程所创建的子进程中使用。本章学习命令个人总结如下显示全局变量显示全局变量显示局部变量全局变量及用户自定义变量导出为全局环境变量删除环境变量 时间:2017年07月31日星期一 说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程...

    Kerr1Gan 评论0 收藏1

发表评论

0条评论

最新活动
阅读需要支付1元查看
<