shell 变量和运算符

系统 Linux
环境变量用于所有用户进程(经常称为子进程).登录进程称为父进程.shell中执行的用户进程均称为子进程.不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器,脚本和应用。

-本地变量  -影响变量的命令
     -环境变量  -引号
     -变量替换  -运算符
     -位置变量  -表达式替换
     -标准shell变量  -运算符的优先级
     -特殊变量

    -变量:
     -什么是shell变量?
     -本地变量
     -环境变量
     -变量替换(显示变量)
     -位置变量
     -标准变量
     -特殊变量
     -影响 变量的命令

    -本地变量:
     -本地变量在用户现在的shell生命期的脚本中使用
     -variable-name=value
     -set显示本地所有的变量
     -readonly variable-name
    #LOCALTEST="test"
    #echo ${LOCALTEST}
    test
    #echo $LOCALTEST
    test
    #set  通过set查看变量
    #exit  退出后查看一下还是否存在LOCALTEST变量
    #readonly LOCALTEST
    #LOCALTEST="test"
    #readonly 查看当前shell有那些只读变量
    #readonly -p
    -环境变量
     -环境变量用于所有用户进程(经常称为子进程).登录进程称为父进程.shell中执行的用户进程均称为子进程.不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器,脚本和应用。
     -$HOME/.bash_profile(/etc/profile)
     -export
     -env
    #cat /etc/profile
    #export Antiy="xi'an"
    #env  然后查找变量Antiy
    #export  也可以查看
    #readonly Antiy 设置为只读
    #export Antiy="xidian" 看是否可以修改,会提示不可以,因为只读了。

    -变量替换:
     -用变量的值替换它的名字。
     -echo
     -在变量名前加$,使用echo命令可以显示单个变量取值。
    #testvar="this is a test"
    #echo $testvar
    this is a test
    #echo ${testvar}
     变量替换-续
    ${Variable name}  显示实际值到variable name
    ${Variable name:+value} 如果设置了variable name,则显示其值value,否则,为空!
    ${Variable name:?value} 如果未设置variable name,显示用户定义错误信息value!
    ${Variable name:-value} 如果未设置variable name, 则显示其值value
    ${Variable name:=value} 如果未设置variable name,设置其值,并显示
    #echo ${testvar:+"xidian"}
    xidian
    #echo ${testvar1:+"xidian"}
    为空
    #echo ${testvar1:?"no defined"}
    bash:testvar1:no defined
    #echo ${testvar1:-"xidian"}
    #echo ${testvar:-"xidian"}
    xidian
    #echo ${testvar:="xidian"}
    this is a test
    #echo ${testvar2:="xidain"}
    xidian
    #echo $testvar2
    xidian

    -变量清除:

    #echo $testvar
    this is a test
    #unset testvar
    #echo $testvar
    空
    #echo $testvar2
    #readonly testvar2
    #unset testvar2
    -位置变量:
     -位置变量表示$0,$1,$2,... ...$9
     -向脚本中使用位置参数
     -向系统命令传递参数
    example01:
    #!/bin/bash
    #parm01
    echo "这是脚本的名称:$0"
    echo "这是脚本的第1个位置参数:$1"
    echo "这是脚本的第1个位置参数:$2"
    echo "这是脚本的第1个位置参数:$3"
    echo "这是脚本的第1个位置参数:$4"
    echo "这是脚本的第1个位置参数:$5"
    echo "这是脚本的第1个位置参数:$6"
    echo "这是脚本的第1个位置参数:$7"
    echo "这是脚本的第1个位置参数:$8"
    echo "这是脚本的第1个位置参数:$9"
    example02:
    #!/bin/bash
    #parm02
    find   /home/shell/ -name $1 -print

    -标准变量:
     -bash默认建立了一些标准环境变量,可在/etc/profile中定义。
     -EXINIT
     -HOME
     -IFS
      echo $IFS
      IFS=':'
     -LOGNAME
     -MAIL
     -MAILCHECK
     -MAILPATH
     -TERM
     -PATH
     -TZ
     -PS1
      #set | grep "PS"
      PS1='[\u@\h \w]\$ '
      PS2='>'
     -PS2
     -PWD
     -SHELL
     -MANPATH
     -TERMINFO
    -特殊变量:
     -$# :传递到脚本的参数个数
     -$* :以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个。
     -$$ :脚本运行的当前进程ID号
     -$! :后台运行的***一个进程的进程ID号
     -$@ :与$*相同,但是使用时加引号,并在引号中返回每个参数
     -$- :显示shell使用的当前选项,与set命令功能相同
     -$? :显示***命令的退出状态,0表示没有错误,其他任何值表明有错误
    #!/bin/bash
    #parm01
    echo "这是脚本的名称:$0"
    echo "这是脚本的第1个位置参数:$1"
    echo "这是脚本的第1个位置参数:$2"
    echo "这是脚本的第1个位置参数:$3"
    echo "这是脚本的第1个位置参数:$4"
    echo "这是脚本的第1个位置参数:$5"
    echo "这是脚本的第1个位置参数:$6"
    echo "这是脚本的第1个位置参数:$7"
    echo "这是脚本的第1个位置参数:$8"
    echo "这是脚本的第1个位置参数:$9"
    echo "显示参数个数:$#"
    echo "显示脚本全部参数:$*"
    echo "显示进程ID:$$"
    echo "显示前一命令运行后状态:$?"
    影响变量的命令:
     -declare
     -export
     -readonly
     -set
     -shift
     -typeset
     -unset
    引号、双引号、单引号、反引号、反斜杠
    运算符、运算符类型

【编辑推荐】

  1. Linux集群基础
  2. Opera将推出Mobile Linux
  3. 玩转linux之二-驱动开发技术探析
责任编辑:庞桂玉 来源: ChinaITLab
相关推荐

2009-08-11 15:51:08

C#运算符算术运算符

2013-08-15 16:48:39

.Net基础

2024-02-26 15:17:20

2017-05-11 16:38:07

javascript逻辑运算符

2009-08-12 15:02:49

C#赋值运算符简单赋值运算符

2009-08-12 15:20:18

C#赋值运算符复合赋值运算符

2023-04-10 08:58:13

C#关系运算符

2009-11-18 09:02:55

PHP运算符

2023-04-03 10:04:36

Java变量类型

2009-08-12 09:30:10

C#??运算符

2016-10-14 14:04:34

JAVA语法main

2020-12-10 08:11:52

typeof instanceofJS

2021-12-15 10:25:57

C++运算符重载

2020-10-29 13:40:52

Java基础

2009-08-12 10:47:03

C#运算符重载

2010-10-08 09:17:07

JavaScript表JavaScript运

2023-03-29 09:22:03

SQLWhere语句

2009-09-01 10:08:57

C#运算符

2021-02-20 23:34:22

JavaScript运算符开发

2021-12-16 10:40:11

C++运算符重载
点赞
收藏

51CTO技术栈公众号