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

相关推荐

  • 修改Linux命令终端提示符

    作业1. 设置自己的终端提示符,要求字符终端登录时:     a> 需要带颜色     b> 需要显示当前执行到了第几条命令     c> 显示当前登录终端,主机名和当前时间     这可以通…

    Linux干货 2016-10-17
  • CentOS下获取帮助

    CentOS中获取帮助 在使用和学习CentOS系统时,我们可能会遇上不熟悉的命令,需要获取帮助。在很多情况下,我们无法通过网络获取帮助,这个时候我们就需要自己通过查看系统帮助文档来解决问题。下面就来介绍获取帮助的方法: 1、 获取简单的帮助信息:whatis COMMAND   2、获取比较详细的命令帮助信息:help COMMAND;COMMA…

    2017-07-15
  • 系统基础之文件管理工具

    系统基础之文件管理工具   linux的重要哲学思想之一,一切皆文件.那作为系统管理员,就要求对文件的操作管理特别熟悉.那么下面介绍的一个工具可以帮助到大家,更有效,快捷的完成对文件的处理.下面让我们来认识以下的工具. 文本工具: 文件内容:   cat: 复制标准输入到标准输出     选项:   &nbs…

    Linux干货 2016-08-07
  • nginx提供web服务——虚拟主机

    练习:定义四个虚拟主机,混合使用三种类型的虚拟主机;   仅开放给来自于本地网络中的主机访问; [root@node1 ~]# vim /etc/nginx/nginx.conf user           …

    Linux干货 2016-10-23
  • vim编译器与shell脚本简介

    一、vim文本编译器       vi:Visual Interface,文本编辑器;   文本: ASCII Unicode  文本编辑种类:行编辑器:sed  ;全屏编辑器:nano,vi ,vim ;其他编辑器:gedit(图形),g…

    Linux干货 2016-11-24
  • Linux基础命令及获取命令帮助

    何为命令?         linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置She…

    Linux干货 2016-10-25