• Bash 命令的解析


    base脚本文件的第一行

    #! /bin/bash

    解析

    1. brace expansion 花括号扩展

    echo {1..10}
    mkdir data{1,2,3,4}
    mkdir data-{a..d}

    使用上面方法可以快速创建 data-a 到 data-d 的文件,".." 可以展开

    2. tilde expansion 波浪线扩展

    "~" 可扩展成用户的 $HOME 值

    cd ~

    3. parameter, variable 变量扩展

    将带"$"的变量名扩展成变量值

    var="xyz"
    echo $var

    4. artithmetic expansion 算术扩展

     整数算术运算

    $(( i++ ))
    sum=$(( i++ ))

    5. command substitution 命令替换

    将命令的输出赋值给一个变量

    today=$(date +%F)
    line=$(grep xxx yyy)

    6. word splitting 词的拆分

    变量值按空白符拆分,如

    var=" a b c"
    for v in var; do
        echo $v
    done

    7. pathname expansion 路径名扩展

    通配符扩展成文件名

    "*" 表示任意长度的字符串

    "?" 表示任意一个字符

    "[]" [1-9] 也可以实现快速扩展,但是只能用于文件名扩展,跟上面的花括号有所区别

    注意

    1. 脚本中的解析是按照上面1到7的顺序进行的

    2. 不要随便写空格,因为空格会导致无法正确解析,例如:"="号两边不允许有空格

    3. 所有 "/" 结尾的都代表是一个文件夹

    4. 注意脚本的权限位和文件掩码,如果在脚本中动态生成一个文件,需要注意是否有权限执行

    5. 避免使用 pwd 获取当前脚本的执行目录,因为 pwd 代表的是当前的工作目录,并不是脚本的。可以使用以下方法,不管在哪里执行脚本,都能正确获取脚本的路径信息

    get_workdir()
    {
        local dir=$(dirname $0)
        pwd=$( cd "$dir" && pwd) 
        echo $pwd
        pwd     
    }
    
    workdir=$(get_workdir)
    echo "workdir: $workdir"

    bash 脚本的调试

    bash -n # 运行前,检查语法
    bash -x 打印执行过程

     

  • 相关阅读:
    AtCoder Grand Contest 031
    CF1010D Mars rover
    51Nod 1317 相似字符串对
    upd
    查漏补缺——字符串www.qq.com所有非空子串
    c语言查漏补缺——Win32环境下动态链接库(DLL)编程原理
    编程——二维矩阵中1所构成的块个数(孤岛问题)
    使用Windows自带远程桌面应用连接CentOS8远程桌面
    ZeroTier + NoMachine
    WinPE装入硬盘做应急系统教程
  • 原文地址:https://www.cnblogs.com/ryanzheng/p/15023558.html
Copyright © 2020-2023  润新知