zoukankan      html  css  js  c++  java
  • Bash 脚本语法

    每次学了忘,忘了学,怎么记不住,因为长时间不用了

    Bash 流程控制

    循环

    for循环

    for item in $list
    do
        echo $item
    done

    另一种与C语言类似的写法

    for((i=0; i<10; i++))
    do
        echo $i
    done

    双括号是个非常好的东西!

    还有一种

    for i in $(seq 1 5)do
    done

    seq还有第三个参数表示step

    更叼的

    for i in {1..10}
    do
    done

    还可以指定{1..10..step}

    条件分支

    if [ -f $file_path ]; then
        #do_something
    fi
    

    if 后面跟条件如为0则进入then分支,这个和C/C++不同,因为bash主要用来根据一些命令的成功与否进行进一步的操作,命令执行成功则返回0,失败则非零

    一般在if后面总是跟个中括号,但它不是bash语法的一部分,[ 也是一个命令,是bash的内建命令,它的参数以]结尾,与命令test功能一致

    条件取反

    加!即可

    类似C中的Switch语句

    case "$VAR" in

        itemA) cmd;;

        itemB) cmd;;

        *) cmd;;

    esac

    item可以使用通配符

     常用文件检测

    • -a   file :file 存在
    • -d file :file存在并是一个目录
    • -e file :file 存在,同- a
    • -f file :file 存在并且是一个常规的文件(不是目录或者其他特殊类型文件)
    • -r file :有读的权限
    • -s file :文件存在且不为空
    • -w file :有写的权限
    • -x file :有执行的权限,或者对于目录有search的权限
    • -N file :在上次读取后,文件有改动
    • -O file :own所属的文件
    • -G file :group所属的文件
    • file1 -nt file2 :file1 比 file2 更新,以最后更新时间为准
    • file1 -ot file2 :file1 比 file2 更旧 ,以最后更新时间为准

    常用整数判断

    -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" ]
    另外可以使用((  ))在双括号内进行C风格的比较
    numa=1
    numb=2
    if (($numa > $numb)); then
            echo "$numa > $numb"
    else
            echo "$numa < $numb"
    fi
    

    常用字符判断

    =   等于 if [ "$a" = "$b" ]

    == 等于if [ "$a" == "$b" ] =等价.

    <小于, 按照ASCII字符进行排序

    if [[ "$a" < "$b" ]]

    if [ "$a" < "$b" ] 注意"<"使用在[ ]结构中的时候需要被转义.

    >大于, 按照ASCII字符进行排序

    if [[ "$a" > "$b" ]]

    if [ "$a" > "$b" ] 注意">"使用在[ ]结构中的时候需要被转义.

    -z 字符串为"null", 意思就是字符串长度为零

    -n 字符串不为"null".

    S=a
    
    if [ "$S"  == "b" ];then
            echo "char is b"
    elif [ "$S" == "a" ];then
            echo "char is a"
    else
            echo "char is $S"
    fi
    

    尽量使用if与then在一行的方式,否则比较容易出错。

    []中使用条件与/或需要使用-o -a 进行连接不能用&&,||,但是[[]]可以,所以还是用[[]]吧,计算上也是使用(())来的方便

    函数

    sayhello() {
            if [ $# -ge 1 ];then
                    echo "hello $1!"
            else
                    echo "hello!"
            fi
    }
    
    sayhello 'my friends'
    

    函数调用时没有括号

    参数参数通过dollar1,dollar2...获取

    参考:

    http://www.21andy.com/manual/advanced-bash-scripting-guide/comparison-ops.html

  • 相关阅读:
    极化码的matlab仿真(4)——SC译码(2)
    极化码的matlab仿真(3)——SC译码(1)
    极化码的matlab仿真(2)——编码
    极化码的matlab仿真(1)——参数设置
    开启极化码之路
    matlab-常用函数(2)
    从零开始搭建django前后端分离项目 系列一(技术选型)
    java8 新特性parallelStream 修改默认多线程数量
    从零开始搭建django前后端分离项目 系列六(实战之聚类分析)
    从零开始搭建django前后端分离项目 系列五(实战之excel流式导出)
  • 原文地址:https://www.cnblogs.com/lailailai/p/3921832.html
Copyright © 2011-2022 走看看