zoukankan      html  css  js  c++  java
  • 1.Linux Shell中的变量

    1. Shell变量类型

    Shell是一种动态类型语言(不使用显式的数据声明)和弱类型语言(变量的类型操作根据需求而不同)。Shell中的变量是不分类型的(都是字符串类型),但是依赖于具体的上下文,Shell编程也允许比较操作和整数操作。

    2. Shell变量的分类

    Shell中有3种变量:用户变量、位置变量(Processing Parameter)、环境变量。

      1.用户变量:用户在Shell编程过程中定义的变量,分为全局变量和局部变量。默认情况下,用户定义的Shell变量为全局变量,如果要指定局部变量,则需使用local限定词。

      2.位置变量:位置变量也称系统变量或位置参数,是Shell脚本运行时传递给脚本的参数,同时也表示Shell脚本内部的函数参数。他们的名称是以数字命名(出于历史原因,直接引用的位置参数只能从0~9,即$0~$9,超过这个范围的必须用括号括起来,如${10}。特殊系统变量:$#(变量个数),$?(上条命令的结束值),$*(所有参数),$@(与S*同义)。注意:当S*和$@在""中时,他们的意义不同,"$*"值是一个字串,"$@"值是N个字串。

      3.环境变量:通常情况下,每个进程都有自己的“环境”,这个环境是由一组变量组成的,这些变量中存有进程可能需要引用的信息。在这种情况下,Shell与一般的进程没有什么区别。重要环境变量:PATH,HOME,LD_LIBRARAY_PATH(寻找库的路径)。

    3. Shell变量的定义和引用

    定义变量的语法:varname=value,如果变量值多于一个词,则必须用引号引起来。

    引用变量值的语法:$varname、${varname}。$varname实际上是${varname}的简略形式。

    ${varname}这种形式允许我们使用Shell字符串操作的更多高级功能,如下:

    替换运算符

    变量运算符 替换
    ${varname:-word}

    如果varname存在且非null,则返回varname的值;否则,返回word。

    用途:如果变量未定义,则返回默认值。

    ${varname:=word}

    如果varname存在且非null,则返回var那么的值;否则,将其置未word,然后返回其值。

    用途:如果变量未定义,则设为默认值。

    ${varname:?message}

    如果varname存在且非null,则返回varname的值;否则,打印message,并退出当前脚本。

    用途:用于捕捉由于变量未定义而导致的错误。

    ${varname:+word}

    如果varname存在且非null,则返回varname的值;否则,返回null。

    用途:用于测试变量存在。

    上表中的每个“:”都是可选的,如果省略“:”,则将每个定义中的“存在且非null”改为“存在”,即变量运算符只判断变量是否存在。

    模式匹配运算符

    变量运算符

    替换

    ${varname#pattern}

    如果pattern匹配varname的开头处,则删除匹配的最短部分,返回剩下的部分。

    ${varname##pattern}

    如果pattern匹配varname的开头处,则删除匹配的最长部分,返回剩下的部分。

    ${varname%pattern}

    如果pattern匹配varname的结尾处,则删除匹配的最短部分,返回剩下的部分。

    ${varname%%pattern}

    如果pattern匹配varname的结尾处,则删除匹配的最长部分,返回剩下的部分。

    ${varname/pattern/string}

    ${varname//pattern/string}

    将varname中匹配pattern的最长部分替换为srting。

    第一种格式中,只有匹配的第一部分被替换;第二种格式中,varname中所有匹配的部分都被替换。

    如果模式以为#开头,则必须匹配varname的开头,如果模式%开头,则必须匹配varname的结尾。

    如果string为空,匹配部分被删除。

    如果varname为@或*,操作被依次应用于每个位置参数,并且扩展为结果列表。  

    4. 启动文件

    Shell使用一些启动文件来协助创建一个运行环境。/etc目录下的文件提供全局设置,如果用户主目录下存在同名文件,它将覆盖全局设置。

    不同Shell的启动文件

    Korn Shell C Shell Bourne Shell Bourne-again Shell

    /etc/environment

    /ect/profile

    $HOME/.profile

    $HOME/.kshrc

    /etc/environment

    /etc/csh.cshrc

    /etc/csh.login

    $HOME/.cshrc

    $HOME/.login

    /etc/environment

    /etc/profile

    $HOME/.profile

    /etc/environment

    /etc/profile

    /etc/bashrc

    $HOME/.bash_profile

    $HOME/.bashrc

      

      

  • 相关阅读:
    [leedcode 155] Min Stack
    [leedcode 154] Find Minimum in Rotated Sorted Array II
    [leedcode 153] Find Minimum in Rotated Sorted Array
    [leedcode 151] Reverse Words in a String
    [leedcode 150] Evaluate Reverse Polish Notation
    [leedcode 149] Max Points on a Line
    maven记录
    intelij idea常用功能介绍
    intelij idea设置和使用git
    intelij idea模板
  • 原文地址:https://www.cnblogs.com/jason886/p/7107238.html
Copyright © 2011-2022 走看看