• shell变量


    使用env命令可列出全部系统变量。不过登录的用户不一样这些环境变量的值也不一样。

    # env

    定义变量(有无双引号""都可)

    注意事项:

    1、定义变量时,变量名不加美元符号($,PHP语言中变量需要)

    2、变量名和等号之间不能有空格

    3、变量名的命名须遵循如下规则:

    • 首个字符必须为字母(a-z,A-Z)。
    • 中间不能有空格,可以使用下划线(_)。
    • 不能使用标点符号。
    • 不能使用bash里的关键字(可用help命令查看保留关键字)。

    使用变量(有无花括号{}都可)

    使用一个定义过的变量,只要在变量名前面加美元符号即可

    一次定义多个变量并使用变量

    #不加单引号
    [root@test ~]# a=(1 2 3 4 5 6 7 8 9 10 11 12) [root@test ~]# echo $a 1 [root@test ~]# echo ${a} 1 [root@test ~]# echo ${a[@]} 1 2 3 4 5 6 7 8 9 10 11 12 [root@test ~]# echo ${a[*]} 1 2 3 4 5 6 7 8 9 10 11 12 [root@test ~]# echo $a[*] 1[*] [root@test ~]# echo $a[@] 1[@]
    #加单引号
    [root@test ~]# b=('apple' 'banana' 'orange' 'pear' 'grape')
    [root@test ~]# echo $b
    apple
    [root@test ~]# echo ${b}
    apple
    [root@test ~]# echo ${b[@]}
    apple banana orange pear grape
    [root@test ~]# echo ${b[*]}
    apple banana orange pear grape
    [root@test ~]# echo $b[@]
    apple[@]
    [root@test ~]# echo $b[*]
    apple[*]

    提取子字符串

    从第几个字符串,截取几个字符

    查找子字符串

    # echo `expr index "$string" du`

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

    使用 unset 命令可以删除变量

    特殊符号

    {} 大括号:

    用法一:通配符扩展

    # mkdir {userA,userB,userC}-{home,bin,data}

    用法二:可用于语句块的构造,语句之间用回车隔开。

    用法三:参数扩展,在处理字符串和未知变量时,是很有用的。

    ${name:-default}

    使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name

    ${name:=default}

    使用指定值来代替空的或者没有赋值的变量name

    # name=${name:-jerry}

    # echo "变量name未赋值时的默认值:$name:$name"

     

    ${param/pattern/string}

    将 param 中第一个匹配 pattern 的子串替换为 string

    # test_string='aaa bbb ccc ddd eee bbb'

    # echo "$test_string 代换: ${test_string/bbb/B   B   B}"

    ${param//pattern/string}

    将 param 中所有匹配 pattern 的子串替换为 string

    # echo "$test_string 整体代换: ${test_string//bbb/B   B   B}"

    ${param:offset}

    提取 param 中从位置 offset 开始的子串(offset 从 0 开始)。如果 offset 为负数,表示从字符串结尾开始,此时 offset 必须被括号括起来,或者在 offset 之前加一个空格

    # echo "提取test_string中从位置3开始的字符串: ${test_string:3}"

    ${#name}

    给出name的长度

    # echo "test_string字符串长度: ${#test_string}"

    # prefix_string=something-test.jpg

    # echo "变量prefix_string的值: ${prefix_string}"

    # echo "删除、替换变量Prefix_string的值: ${prefix_string#something-}"

    # suffix_string=test.conf

    # echo "删除、替换变量suffix_string的值: ${suffix_string%.conf}"

    大小写替换:

    ${param^^pattern}

    pattern 为单个字符,将 param 中所有匹配 pattern 的字符转换为大写

    # multi_case_string='abcdefgABCDEFGabcdefgABCDEFG'

    # echo "小写改大写: ${multi_case_string^^}"

    ${param,,pattern}

    pattern 为单个字符,将 param 中所有匹配 pattern 的字符转换为小写

    # echo "大写改小写: ${multi_case_string,,}"

    只修改匹配的字符:

    # echo "小写改大写: ${multi_case_string^^[abc]}"

    # echo "大写改小写: ${multi_case_string,,[DEF]}"

    [] 中括号:

    用法一:允许匹配方括号中任何一个单个字符。

    注意:在mkdir命令下无效。

    用法二:用于条件判断符号。

    []符号可理解为指向test命令的一个软链接,所以其用法可完全参照test。

    反引号

    ` command ` 反引号:`command`与$(command)的含义相同,返回当前执行命令的结果:

    ' string ' 单引号 和 “ string ” 双引号:

    单引号字符串的限制:

    1. 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    2. 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

    单、双引号的区别在于双引号转义特殊字符而单引号不转义特殊字符。

    $((…))语法:对括号内的表达式求值

    shell中几种特殊的参数变量的引用:

    • $1、$2、$3……${10}、${11}、${12}……:表示脚本传入的的各个参数,注意当需表示两位数以后的参数时数字要用花括号括起。
    • $@ 列出所有的参数,各参数用空格隔开
    • $*  列出所有的参数,各参数用环境变量IFS的第一个字符隔开

    冒号

    “:”( 冒号):内建空指令,返回值为0

    井号

     “#”( 井号):表示符号后面的是注解文字,不会被执行;

    * 匹配文件名中的任何字符,包括字符串;

     ?匹配文件名中的任何单个字符;

     ~ 代表使用者的home目录。

     倒斜线

    “”(倒斜线):放在指令前,有取消aliases(别名)的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行(使得回车符无效,只起换行作用)。

    感叹号

    “!”(感叹号):通常它代表反逻辑的作用,譬如条件侦测中,用“!=”来代表“不等于”。

  • 相关阅读:
    particcles.js in 安卓WebView
    PDF.js 主页样式以及获取流
    Oracle授权A中的表给B
    安卓Response 获取body的正确方式
    android.util.Base64 和 org.apache.commons.codec.binary.Base64
    DAY62-前端入门-javascript(九)jQurey高级
    DAY61-前端入门-javascript(八)jQurey
    DAY60-前端入门-javascript(七)JS动画 | JS盒模型 | DOM | BOM
    DAY59-前端入门-javascript(六)JS事件
    DAY58-前端入门-javascript(五)JS常用类
  • 原文地址:https://www.cnblogs.com/djlsunshine/p/9865038.html
Copyright © 2020-2023  润新知