zoukankan      html  css  js  c++  java
  • 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(别名)的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行(使得回车符无效,只起换行作用)。

    感叹号

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

  • 相关阅读:
    BEM(Block–Element-Modifier)
    http://element.eleme.io/#/zh-CN/component/quickstart
    Commit message 的写法规范。本文介绍Angular 规范(
    好的commit应该长啥样 https://github.com/torvalds/linux/pull/17#issuecomment-5654674
    代码管理
    if you have content fetched asynchronously on pages where SEO is important, SSR might be necessary
    Martin Fowler’s Active Record design pattern.
    The Zen of Python
    Introspection in Python How to spy on your Python objects Guide to Python introspection
    Object-Oriented Metrics: LCOM 内聚性的度量
  • 原文地址:https://www.cnblogs.com/djlsunshine/p/9865038.html
Copyright © 2011-2022 走看看