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 打印执行过程

Bash 命令的解析的更多相关文章

  1. Bash编程(3) 命令行解析与扩展

    $@表示脚本输入的全部参数,在bash脚本中,若$@增加引号("$@"),则包含空格的参数也会被保留,若不增加引号($@),则包含空格的参数会被拆分. 例: # sa脚本内容如下: ...

  2. linux配置网路 设定主机名 ssh bash命令 通配符

    临时配置网络(ip,网关,dns) #ifconfig ens33 192.168.185/24 #ens33网卡名称.192.168.185/24是要配置的ip地址/子网掩码 #vim /etc/r ...

  3. Linux基础-配置网络、集群内主机名设定、ssh登入、bash命令、通配符(元字符)

    作业一:临时配置网络(ip,网关,dns)+永久配置 设置临时网络配置: 配置IP ifcongfig ens33 192.168.16.177/24 (ifconfig 网卡 ip地址    /24 ...

  4. 08 网络配置、shh服务、bash命令和元字符

    作业一:完成作业未做完的集群架构作业二:临时配置网络(ip,网关,dns)+永久配置 作业三:为集群内的机器设定主机名,利用/etc/hosts文件来解析自己的集群中所有的主机名,相应的,集群的配置应 ...

  5. linux---网络相关配置,ssh服务,bash命令及优先级,元字符

    - 二:临时配置网络(ip,网关,dns)+永久配置 临时配置: [root@nfs-server ~]# ifconfig ens32: flags=4163<UP,BROADCAST,RUN ...

  6. (转)linux应用之test命令详细解析

    linux应用之test命令详细解析 原文:https://www.cnblogs.com/tankblog/p/6160808.html test命令用法. 功能:检查文件和比较值 1)判断表达式 ...

  7. Windows 10预览版14316开启Bash命令支持

    00x0 前言 4月7日凌晨,微软推送了最新的Windows 10一周年更新预览版14316,其中重要的是原生支持Linux Bash命令行支持. 00x1 问题 如何开启Linux Bash命令行? ...

  8. bash命令行返回值和展开

    bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...

  9. 转: windows 10使用原生linux bash命令行

    转: https://www.zybuluo.com/pandait/note/337430 windows 10使用原生linux bash命令行 linux bash windows-10 第一时 ...

  10. BASH 命令以及使用方法小结

    最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...

随机推荐

  1. Caddy自编译

    转载自我的个人博客:Caddy自编译 配置 Golang 环境 需要先配置 Golang 环境:Download and install - The Go Programming Language w ...

  2. 小白也行的:Easy OCR做一款免费的图片转文字

    \(\text{EasyOCR}\) 支持超过 \(80\) 种语言的识别,包括英语.中文(简繁).阿拉伯文.日文等,并且该库在不断更新中,未来会支持更多的语言.像市面上所有的图片识别都用的是 \(\ ...

  3. JVM 类加载过程与字节码执行深度解析

    在 Java 高级程序员面试中,类加载机制与字节码执行原理是 JVM 模块的核心考察点.本文从类加载生命周期.类加载器协作机制.字节码执行引擎及面试高频问题四个维度,结合 JVM 规范与 HotSpo ...

  4. 搭建个人博客系列--(4) 利用Github Actions自动构建博客

    经过前面的系列文章的学习和实践,相信你已经成功的利用Hexo构建自己的博客并且部署到了Github上. 目前整个发布博客的流程是,用markdown文件写好博客,然后使用Hexo编译成html, 最后 ...

  5. Spring Boot 自动配置原理深度解析

    在 Spring 生态系统中,Spring Boot 自动配置是实现 "零配置" 开发的核心特性,通过约定大于配置的理念,自动为应用注入所需的基础设施配置.本文从核心注解.底层机制 ...

  6. Kong入门学习实践(8)流量控制插件

    Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件.一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件.今天,我们就来了解一些常用的流量控制插件. 关于流量控制 ...

  7. 网络流最大流Dinic算法

    感谢董晓老师:博客,b站 /* Dinic算法的思路是,用bfs进行分层,限制后面dfs每次的搜索深度, 并且,在dfs的过程中,直接把当前这个路走到u的容量限制分给u的各个出边 */ #includ ...

  8. java---前端知识补充

    css的定位 相对定位: 相对定位是相对于元素原本的位置进行移动的. 使用方式: position:relative; 绝对定位: 绝对定位是相对于整个页面而言. position:absolute; ...

  9. android多活动练习--人品计算器

    效果图如下: 第二个页面: 显示结果和姓名.性别有关,代码如下: activity_main.xml: 1 <?xml version="1.0" encoding=&quo ...

  10. delete js转载

    http://www.jb51.net/article/54247.htm 1,对象属性删除 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 function fun(){   thi ...