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

相关推荐

  • 磁盘配额的操作步骤

    磁盘配额 操作步骤: 1、创建一个10G的分区 /dev/sdd1并将其格式化,挂载 2、如果是新硬盘便不存在同步问题。旧硬盘得使用命令partx  -a /dev/sdd1 3、临时创建挂载文件夹 /mnt/home    4、将/home/*  mv  到 /mnt/home 中,再将/dev/…

    Linux干货 2016-09-01
  • 从Linux小白到大牛——与狼共舞的日子10

    马哥教育网络班21期+第10周课程练习 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) POST –> Boot Sequence(BIOS) –> Boot Loader(MBR)   –> Kernel+ramdi…

    Linux干货 2016-12-05
  • Linux基础入门

    Linux基础入门 1、Linux发行版及哲学思想 1.1 Linux发行版          Linux发行版(Linux Distribution,也被叫做GUN/Linux发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。Linux发行版通常包含了包括桌面环…

    Linux干货 2016-02-28
  • 马哥教育网络第21期-第1周课程练习

    第一周博客 1、描述计算机的组成及其功能。 计算机的组成:运算器、控制器、储存器、输入设备、输出设备 运算器+控制器 = CPU 储存器 = RAM(内存) I/O(输入/输出)设备 = 硬盘、打印机、鼠标、键盘、显示器 CUP:运算和逻辑运算 储存器:缓存和储存数据 I/O设备:计算机与用户交互的设备 2、按系列罗列Linux的发行版,并描述不同发行版之间…

    Linux干货 2016-06-26
  • linux入门学习动手部分

    linux入门学习了几天,各种命令跟选项如果靠记忆很容易忘记,通过下面随堂实验加深记忆 实验操作部分 enable 命令使用 禁用内部命令 enable -n echo 禁用echo命令 重新启用echo命令 enable echo type 命令使用 type -a echo 列出所有echo的内部命令外部命令 type -p cd 显出cd外部命令的路径…

    Linux干货 2017-05-20
  • Linux发展史

    摘要:Linux无处不在的存在于我们的周围,家庭、公司、学校等等。现在的Linux已经从最初示很少的一段代码,发展成全世界应用范围最广的操作系统。本文将为大家展现Linux的发展史。 一、Linux的是什么       Linux是一套可以免费使用和自由传播的类Unix操作系统操作系统,是一个基于POSIX和UNIX的多用户、多…

    Linux干货 2016-10-18