• 嵌入式成长轨迹5 【嵌入式环境及基础】【嵌入式Linux软件开发入门】【变量和运算符】



    一、变量

    1、本地变量:在用户现在的shell生命周期的脚本中使用
    variable_name = "xxx"
    set可以展示出现在所有的本地变量
    readonly variable_name  标明是只读变量(可以先赋值再标注)

    2、环境变量:用于所有用户进程(经常称为子进程)
    cat /etc/prof  查看所有环境变量
    export name="" 设置环境变量
    也可表明为只读变量

    3、变量替换
    echo ${variable_name}用变量的值替换它的名字(大括号可省)
    如echo $testvar
    echo ${variable_name:+value}如果设置了variable,则显示value,否则,为空
    echo ${variable_name:?value}如果未设置则显示用户定义的错误信息(这样的信息与别的信息有区别)value
    echo ${variable_name:-value}如果未设置则显示为value
    echo ${variable_name:=value}如果未设置则修改其值并显示为value

    #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

    4、变量清除
    unset variable_name
    只读变量不能清除

    #echo $testvar
    this is a test
    #unset testvar
    #echo $testvar

    #echo $testvar2
    #readonly testvar2
    #unset testvar2

    5、位置变量
    位置变量表示$0,$1,...,$9
    $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
    脚本名 A B C D E F

    1)向脚本中使用位置变量参数
    2)向系统命令传递参数

     位置变量 1)向脚本中使用位置变量参数

     1 #!/bin/bash
    2 #parm
    3
    4 echo $0
    5 echo $1
    6 echo $2
    7 echo $3
    8 echo $4
    9 echo $5
    10 echo $6
    11 echo $7
    12 echo $8
    13 echo $9
    [root@localhost ~]# vi parm.sh
    [root@localhost ~]# chmod a+x parm.sh
    [root@localhost ~]# ./parm.sh
    ./parm.sh
    [root@localhost ~]# ./parm.sh a b c d e f g h i j k l
    ./parm.sh
    a
    b
    c
    d
    e
    f
    g
    h
    i

    2)向系统命令传递参数

    1 #!/bin/bash
    2 #parm2.sh
    3 find /root -name $1 -print
    [root@localhost ~]# vi parm2.sh
    [root@localhost ~]# chmod a+x parm2.sh
    [root@localhost ~]# ls
    anaconda-ks.cfg install.log.syslog testfile.dat 模板 图片 下载 桌面
    install.log parm2.sh 公共的 视频 文档 音乐
    [root@localhost ~]# ./parm2.sh testfile.dat
    /root/testfile.dat

    6、标准变量
    bash默认建立了一些标准环境变量,可在/etc.profile中定义

    EXINIT  初始化使用
    HOME    安装路径
    IFS    标准变量中用什么值来分割
    LOGNAME  显示用户名
    MAIL 显示邮件目录
    MAILCHECK 每隔多少秒检查邮件
    MAILPATH  mail存储在那个文件中
    TERM 终端类型
    PATH 命令寻找路径
    TZ 时区
    PS1 终端命令左端显示的字符串[root@chinaitlab shell]
    PS2 一行多个命令时的标识
    EDITOR 提示是否有新邮件以及邮件的目录
    PWD 显示当前目录
    SHELL 当前运行的SHELL
    MANPATH 帮助文档的目录
    TERMINFO 终端类型的帮助记录信息

    7 特殊变量
    $# 传递到脚本的参数个数
    $* 以一个单字符串显示所有向脚本传递的参数,可超过9个
    $$ 脚本运行的当前进程ID号
    $! 后台运行的最后一个进程的ID号
    $@ 返回参数列表。使用时加引号,并在引号中返回每个参数
    $- 显示shell使用的当前选项,与set命令功能相同
    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表示有错误

    8 影响变量的命令
    declare
    设置或显示变量
    -f只显示函数名
    -r创建只读变量(这个不能颠倒)
    -x创建环境变量
    -i创建整数变量
    使用+替代-,可以颠倒选项的含义

    export
    用于创建传给子shell的变量
    --表明选项结束,所有后续参数的实参
    -f表明在名-值对中的名字是函数名
    -n把全局变量转换成局部变量。命令的变量不再传给shell
    -p显示全局变量列表

    readonly
    用于显示或设置只读变量
    --表示选项结束
    -f创建只读变量

    set
    设置和重设各种shell

    shift[n]
    用于移动位置变量,调整位置变量,n指明移动位数。如移动1位使$3赋给$2,$2赋给$1

    typeset
    用于显示或设置变量
    是declare的同义词

    unset
    用于取消变量定义
    --表明选项结束
    -f删除只读变量,但不能删除Shell环境中指定的变量和函数,如PATH等设置

    #清除

    [root@localhost ~]# echo ${var1:-"haha"}
    haha
    [root@localhost ~]# echo $var1

    [root@localhost ~]# echo ${var1:="haha"}
    haha
    [root@localhost ~]# echo $var1
    haha
    [root@localhost ~]# unset var1
    [root@localhost ~]# echo $var1

    #不能清除只读变量

    [root@localhost ~]# var="a"
    [root@localhost ~]# echo $var
    a
    [root@localhost ~]# readonly var
    [root@localhost ~]# unset var
    bash: unset: var: cannot unset: readonly variable


    二、引号
    变量和替换操作,在脚本中执行变量替换时最容易犯的一个错误就是引用错误

    1、双引号
    使用双引号可引用除字符$、`、\外的任意字符或字符串

    2、单引号
    与双引号类似,不同的是shell会忽略任何引用值。里面所有字符包括引号都作为一个字符串

    3、反引号
    用于设置系统命令的输出到变量。shell将反引号中的内容作为一个系统命令,并执行其内容

    4、反斜杠
    如果一个字符有特殊含义,前面加上反斜杠之后可以屏蔽
    如\&  \*  \+  \^  \$  \'  \"  \|  \?

    三、运算符
    运算符是对计算机发的指令
    运算对象
    -数字、字符
    -变量
    -表达式:运算符和运算对象的组合体

    一、类型
    1、按位运算符
    ~ << >> & | ^(异或)

    $[ ] 表示要求shell对括号中的表达式求值(括号中间要有空格隔开)

    2、逻辑运算符
    && ||

    3、赋值运算符
    = += -= *= /= %= &= ^= |= <<= >>=
    let $count = $count + $change
    let $count += $change

    二、表达式替换
    $[ ] 大致等于 $(())
    $[ ] 可以接受不同基数的数字
    [ base#n ] n表示基数从2到36的任何基数

    echo $[ 10#8+1 ]
    9

    三、运算符的优先级
    基本其他语言相同
    如果不清楚可以使用括号

  • 相关阅读:
    未命名 1
    介绍一些实用的IOS手势识别库 (COCOS2D)
    cocos2d-x引擎实现$1Unistroke Recognizer手势识别
    【luogu P4755】Beautiful Pair(ST表)(笛卡尔树)(主席树)
    【ybtoj高效进阶 21290】头文件 D(平衡规划)(线段树)
    【ybtoj高效进阶 21289】头文件 C(图论)(dfs)
    【ybtoj高效进阶 21288】头文件 B(线段树)(图论)
    【ybtoj高效进阶 21282】数字重组(DP)(数学)
    【ybtoj高效进阶 21281】矩阵逆转(模拟)
    【ybtoj高效进阶 21280】景点距离(DP)(换根)
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2376154.html
Copyright © 2020-2023  润新知