• shell-script-make


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

    chmod +x ./test.sh  #使脚本具有执行权限
    ./test.sh  #执行脚本 告诉系统说,就在当前目录找。
    /bin/sh test.sh #指定解释器执行 这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
    your_name="runoob.com"

    注意,变量名和等号之间不能有空格

    for file in `ls /etc`
    
    for file in $(ls /etc)

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

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

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

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

    推荐给所有变量加上花括号,这是个好的编程习惯。

    myUrl="https://www.google.com"
    readonly myUrl  ##只读变量
    myUrl="https://www.runoob.com"

    unset variable_name #删除变量 不能删除只读变量

    字符串类型变量定义

            双引号里可以有变量,可以出现转义字符;单引号里的任何字符都会原样输出

            # 使用单引号拼接

          greeting_2='hello, '$your_name' !'

    string="runoob is a great site"
    echo ${string:1:4} # 输出 unoo

    string="abcd"
    echo ${#string} #输出 4

    查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
    string="runoob is a great site"
    echo `expr index "$string" io`  # 输出 4; 反引号里表示执行命令

    数组名=(值1 2 ... n),数组元素用"空格"符号分割开

    ${数组名[下标]};
    echo ${array_name[@]} #获取所有元素
    # 取得数组元素的个数
    length=${#array_name[@]}


    可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,
    #  单行注释
    :<<!
    注释内容...
    注释内容...
    注释内容...
    !



    ./test.sh 1 2 3  ##执行shell script时传入参数,在shell script中使用'$n'(n为一个数字)获取,'$0'默认是文件名,其后则为执行指定的参数
    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
    $* 以一个单字符串显示所有向脚本传递的参数。
    $# 传递到脚本的参数个数

    $* 与 $@ 区别:

    • 相同点:都是引用所有参数。
    • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

    val=`expr 2 + 2` #两数之和,还有其他算术运算
    符:-、*、/、%、=、==、!=。(乘号(*)前边必须加反斜杠()才能实现乘法运算
     
    == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
    != 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
                                                       条件表达式要放在方括号之间,并且要有空格,
    关系运算符

     
     
     
     
  • 相关阅读:
    Android strings.xml中定义字符串显示空格
    Android各国语言对照表(values-xxx)
    SimInfo获取(MCC, MNC, PLMN)
    Android APN
    Android studio 运行java程序
    [MyBatis]DAO层只写接口,不用写实现类
    idea代码调试debug篇
    比较分析 Spring AOP 和 AspectJ 之间的差别
    maven进阶:一个多模块项目
    Maven最佳实践:划分模块
  • 原文地址:https://www.cnblogs.com/coder1000/p/14052753.html
Copyright © 2020-2023  润新知