zoukankan      html  css  js  c++  java
  • Shell变量

    第一个shell脚本

    #!/bin/bash
    echo "Hello World !"

    #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

    将上面的代码保存为 test.sh,并 cd 到相应目录

    chmod +x ./test.sh  # 使脚本具有执行权限
    ./test.sh  # 执行脚本
    

    Shell 变量

    your_name="runoob.com"
    

    除了显式地直接赋值,还可以用语句给变量赋值,如:

    for file in `ls /etc`
    

    以上语句将 /etc 下目录的文件名循环出来

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

    your_name="qinjx"
    echo $your_name
    echo ${your_name}
    

    变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

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

    #!/bin/bash
    myUrl="http://www.w3cschool.cc"
    readonly myUrl
    myUrl="http://www.runoob.com"
    

    使用 unset 命令可以删除变量。语法:

    unset variable_name

    变量被删除后不能再次使用。unset 命令不能删除只读变量

    单引号
    str='this is a string'
    单引号字符串的限制:
    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)
    双引号
    str="Hello, I know your are "$your_name"! 
    "
    双引号的优点:
    • 双引号里可以有变量
    • 双引号里可以出现转义字符
    获取字符串长度
    string="abcd"
    echo ${#string}  # 输出 4
    
    提取子字符串
    以下实例从字符串第 2 个字符开始截取 4 个字符:
    string="runoob is a great site"
    echo ${string:1:4}  # 输出 unoo
    
    查找子字符串
    查找字符 "i 或 s" 的位置:
    string="runoob is a great company"
    echo `expr index "$string" is`  # 输出 8
    注意: 以上脚本中 "`" 是反引号,而不是单引号 "'"

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小

    在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
    array_name=(value0 value1 value2 value3)
    
    读取数组元素值的一般格式是:
    valuen=${array_name[n]}
    使用@符号可以获取数组中的所有元素,例如:
    echo ${array_name[@]}
    获取数组长度的方法与获取字符串长度的方法相同,例如:
    # 取得数组元素的个数
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}
    # 取得数组单个元素的长度
    lengthn=${#array_name[n]}
    
    以"#"开头的行就是注释,会被解释器忽略,sh里没有多行注释,只能每一行加一个#号
    如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?
    每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果
  • 相关阅读:
    sql之left join、right join、inner join的区别
    根据窗体自动调整控件及文本框记住上次填写内容Demo
    vue-cli建立的项目如何在手机端运行以及如何用charles来抓包
    React日常注意点
    关于表格排序问题
    关于如何将html中的表格下载成csv格式的方法
    关于深拷贝和浅拷贝的学习分享
    关于事件绑定的函数封装
    谈谈关于鼠标的那些事件
    关于前端面试的问题集锦
  • 原文地址:https://www.cnblogs.com/freescience/p/7298086.html
Copyright © 2011-2022 走看看