bash中的变量详解

    在bash中,巧妙地运用变量,能够大大减轻编程的工作量,下面让我们来详细了解一下bash的变量.

bash中的变量种类:

    根据变量的生效范围等标准:

        本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效

        环境变量:生效范围为当前shell进程及其子进程

        局部变量:生效范围为当前shell进程中某代码片断(通常指函数)

        位置变量: $1, $2, …来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数

        特殊变量: $?, $0, $*, $@, $#


本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效

    变量赋值: name=‘value’,

    可以使用引用value:

    (1) 可以是直接字串; name=“root"

    (2) 变量引用: name="$USER"

    (3) 命令引用: name=`COMMAND`, name=$(COMMAND)

    变量引用: ${name}, $name

    "":弱引用,其中的变量引用会被替换为变量值

    '':强引用,其中的变量引用不会被替换为变量值,而保持原字符串

    显示已定义的所有变量: set

    删除变量: unset name

    当变量不再需要时,要释放变量,以减轻内存的负担


环境变量(当前shell及其子进程均可引用)

    变量声明、赋值

    export name=VALUE

    declare -x name=VALUE

    变量引用: $name, ${name}

    显示所有环境变量:

    export

    env

    printenv

    删除: unset name

    bash有许多内建的环境变量: PATH, SHELL, USRE,UID,HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1


只读和位置变量

只读变量:只能声时,但不能修改和删除

        readonly name

        declare -r name

位置变量:在脚本代码中调用通过命令行传递给脚本的参数

    $1, $2, …:对应第1、第2等参数, shift [n]换位置

    $0: 命令本身

    $*: 传递给脚本的所有参数,全部参数合为一个字符串

    $@: 传递给脚本的所有参数,每个参数为独立字符串

    $#: 传递给脚本的参数的个数

    $@ $* 只在被双引号包起来的时候才会有差异

        示例:判断给出的文件的行数

        linecount="$(wc -l $1| cut -d' ' -f1)"

        echo "$1 has $linecount lines."

       

  [root@localhost testdir]# cat 1.sh
        #!bin/bash
        #
        ./2.sh "$@"
        echo =================
        ./2.sh "$*"
        [root@localhost testdir]# cat 2.sh
        echo $1
        echo $2
        [root@localhost testdir]# bash 1.sh 11 22
        11
        22
        =================
        11 22


原创文章,作者:hunter,如若转载,请注明出处:http://www.178linux.com/36080

(0)
hunterhunter
上一篇 2016-08-18 15:27
下一篇 2016-08-18 17:22

相关推荐

  • 马哥教育网络班21期第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@centos7study&nbs…

    Linux干货 2016-08-29
  • Linux源程序包相关概念整理

    一、      Linux源程序包介绍 1)    linux源程序包基础 1.         遵循常用开源协议:BSD、Apache Licence 2.0、GPL、LGPL、MIT 2.&nbs…

    系统运维 2015-09-22
  • linux中bash的基础特性和基本文件管理命令

    linux的文件管理类命令 linux系统下的涉及到目录管理命令,主要有 mkdir,rmdir linux系统下也会用到许多文件查看类命令,包括cat,tac,head,tail,more,less等 linux系统下涉及的文件管理类命令主要有cp,mv,rm 本节我们主要说明文件管理类命令的使用方法。 cp命令的使用方法 首先,cp这个命令的作用是可以复…

    Linux干货 2016-09-26
  • awk

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

    Linux干货 2018-01-02
  • Linux三剑客之sed

    sed:全称stream EDit 行文本编辑器 作用:是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在模式空间,接着用 sed命令处理缓冲区中的内容,处理完成后,把模式空间的内容输出到标准输出。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件,简化对文件的反复操…

    Linux干货 2016-08-12
  • linux系统监控 sar命令详解

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 本文主要以CentOS 6.3 x64系统为例,介绍s…

    Linux干货 2015-06-17