zoukankan      html  css  js  c++  java
  • shell中的变量

    运行SHELL脚本中的单个命令自然有用,但这有其自身的限制。通常你会需要在SHELL命令使用其他数据来处理信息。

    这可以通过变量来实现。变量允许你临时性地将信息存储在SHELL脚本中,以便和脚本中的其他命令一起使用。

    1 环境变量

    SHELL维护着一组环境变量,用了记录特点的系统信息。比如系统的名称、登录到系统上的用户名、用户的默认家目录以及SHELL查找程序的搜索路径。可以用set命令来显示一份完整的当前环境变量。

    [root@local data]# set |head -30

    ABRT_DEBUG_LOG=/dev/null

    BASH=/bin/bash

    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath

    BASH_ALIASES=()

    BASH_ARGC=()

    BASH_ARGV=()

    BASH_CMDS=()

    BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d

    [. . . ]

    在脚本中,你可以在环境变量名称前加上美元符 $ 来使用这些环境变量。

    例如:

    [root@local data]# echo $HOME
                    /root

    2 用户变量

            处理环境变量,SHELL脚本中还允许在脚本中定义和使用自己的变量。定义变量允许临时存储数据并在整个脚本中使用,从而使SHELL脚本看起来更像一个真正的程序。

            用户变量定义规则:可以用字母、数字、下划线组成的文本字符串。长度不超过20个。用户变量区分大小写。

            使用等号将赋值给用户变量。注意:在变量、等号和值之间不能出现空格。

    例如:var1=10,MYNAME=xiaoming

            (1)SHELL会自动决定变量值得数据类型。在脚本的整个生命周期中,SHELL 脚本中定义的变量会一直保持着它们的值,但在SHELL结束时会被删除。

            (2)变量每次被引用时,都会输出当前赋给它的值。引用一个变量是需要使用美元符"$",二引用变量来对其进行赋值时则不要使用美元符。

    3 只读变量

            只能声明,但是不能修改和删除。

    声明只读变量:

                    readonly     name

                    declare -r    name

    查看只读变量:    readonly     -p

    4 位置变量

            在脚本代码中调用命令行传递给脚本的参数

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

    $0:脚本本身

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

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

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

    注意:$@$* 只有在被双括号扩起来的时候才有差异

    set – - 清空所有位置变量

    5 命令替换

            SHELL脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其值赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。

            有两种方法可以将命令输出赋给变量:

    1. 反引号 ( ` )
    2. $( ) 格式。

    例如: testing=`date`

         或者testing=$(date)

    在脚本通过命令替换获得当前日期并用来生成唯一文件名。

    #!/bin/bash

    #

    today=$( date +%Y-%m-%d-%H:%M:%S)

    ls /root/123 -al >log.$today

  • 相关阅读:
    定位--position属性
    浮动
    超链接伪类
    对齐方式
    字体样式
    标准文档流
    CSS
    表单
    框架
    内部类
  • 原文地址:https://www.cnblogs.com/Sunzz/p/6867554.html
Copyright © 2011-2022 走看看