• shell


    整数比较
    -eq 等于,如:if [ "$a" -eq "$b" ]
    -ne 不等于,如:if [ "$a" -ne "$b" ]
    -gt 大于,如:if [ "$a" -gt "$b" ]
    -ge 大于等于,如:if [ "$a" -ge "$b" ]
    -lt 小于,如:if [ "$a" -lt "$b" ]
    -le 小于等于,如:if [ "$a" -le "$b" ]
    < 小于(需要双括号),如:(("$a" < "$b"))
    <= 小于等于(需要双括号),如:(("$a" <= "$b"))
    > 大于(需要双括号),如:(("$a" > "$b"))
    >= 大于等于(需要双括号),如:(("$a" >= "$b"))
    字符串比较
    = 等于,如:if [ "$a" = "$b" ]
    == 等于,如:if [ "$a" == "$b" ],与=等价


    注意:==的功能在[[]]和[]中的行为是不同的,如下:
    [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
    [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true

    [ $a == z* ] # File globbing 和word splitting将会发生
    [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true


    今天执行一个shell脚本,一直报错syntax error near unexpected token `elif'
    看语法也一直看不出什么错误,那是git源码里面的脚本文件GIT-VERSION-GEN,不应该怀疑它的正确性
    在网上找了找资料,问题得到解决,原因是
    把该文件从windows上copy到ubuntu上时,里面的换行符之类的已经不是unix格式的了
    所以要转换一下。
    ubuntu上的格式转换命令跟red hat上的名字有点不同
    dos2unix:在ubuntu上对应的命令是fromdos
    unix2dos:在ubuntu上对应的命令是todos

    while循环(可使用continue或者break语句)
    #!/bin/bash
    a=100
    sum=0
    while [ $a -gt 0 ]; do
    sum=$(($sum + $a))
    ((a--))
    done
    echo $sum

    for循环
    #!/bin/bash
    for var in A B C ; do
    echo "var is $var"
    done


    sh -x strangescript
    上述命令会执行该脚本,同时显示所有变量的值。
    shell还有一个不执行脚本只检查语法的模式,命令如下:
    sh -n your_script
    这个命令会返回所有语法错误。

  • 相关阅读:
    堆排序
    conda 安装pytorch
    Dev GridControl GridView常用属性
    java 同步调用和异步调用
    spring Boot 整合 Memcached (含 windows 安装)
    spring Boot 整合 Elasticsearch
    windows 下安装 elasticsearch
    代理模式---Cglib动态代理
    代理模式---JDK动态代理
    代理模式---静态代理
  • 原文地址:https://www.cnblogs.com/muhe221/p/7647679.html
Copyright © 2020-2023  润新知