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 打印执行过程
Bash 命令的解析的更多相关文章
- Bash编程(3) 命令行解析与扩展
$@表示脚本输入的全部参数,在bash脚本中,若$@增加引号("$@"),则包含空格的参数也会被保留,若不增加引号($@),则包含空格的参数会被拆分. 例: # sa脚本内容如下: ...
- linux配置网路 设定主机名 ssh bash命令 通配符
临时配置网络(ip,网关,dns) #ifconfig ens33 192.168.185/24 #ens33网卡名称.192.168.185/24是要配置的ip地址/子网掩码 #vim /etc/r ...
- Linux基础-配置网络、集群内主机名设定、ssh登入、bash命令、通配符(元字符)
作业一:临时配置网络(ip,网关,dns)+永久配置 设置临时网络配置: 配置IP ifcongfig ens33 192.168.16.177/24 (ifconfig 网卡 ip地址 /24 ...
- 08 网络配置、shh服务、bash命令和元字符
作业一:完成作业未做完的集群架构作业二:临时配置网络(ip,网关,dns)+永久配置 作业三:为集群内的机器设定主机名,利用/etc/hosts文件来解析自己的集群中所有的主机名,相应的,集群的配置应 ...
- linux---网络相关配置,ssh服务,bash命令及优先级,元字符
- 二:临时配置网络(ip,网关,dns)+永久配置 临时配置: [root@nfs-server ~]# ifconfig ens32: flags=4163<UP,BROADCAST,RUN ...
- (转)linux应用之test命令详细解析
linux应用之test命令详细解析 原文:https://www.cnblogs.com/tankblog/p/6160808.html test命令用法. 功能:检查文件和比较值 1)判断表达式 ...
- Windows 10预览版14316开启Bash命令支持
00x0 前言 4月7日凌晨,微软推送了最新的Windows 10一周年更新预览版14316,其中重要的是原生支持Linux Bash命令行支持. 00x1 问题 如何开启Linux Bash命令行? ...
- bash命令行返回值和展开
bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...
- 转: windows 10使用原生linux bash命令行
转: https://www.zybuluo.com/pandait/note/337430 windows 10使用原生linux bash命令行 linux bash windows-10 第一时 ...
- BASH 命令以及使用方法小结
最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...
随机推荐
- Caddy自编译
转载自我的个人博客:Caddy自编译 配置 Golang 环境 需要先配置 Golang 环境:Download and install - The Go Programming Language w ...
- 小白也行的:Easy OCR做一款免费的图片转文字
\(\text{EasyOCR}\) 支持超过 \(80\) 种语言的识别,包括英语.中文(简繁).阿拉伯文.日文等,并且该库在不断更新中,未来会支持更多的语言.像市面上所有的图片识别都用的是 \(\ ...
- JVM 类加载过程与字节码执行深度解析
在 Java 高级程序员面试中,类加载机制与字节码执行原理是 JVM 模块的核心考察点.本文从类加载生命周期.类加载器协作机制.字节码执行引擎及面试高频问题四个维度,结合 JVM 规范与 HotSpo ...
- 搭建个人博客系列--(4) 利用Github Actions自动构建博客
经过前面的系列文章的学习和实践,相信你已经成功的利用Hexo构建自己的博客并且部署到了Github上. 目前整个发布博客的流程是,用markdown文件写好博客,然后使用Hexo编译成html, 最后 ...
- Spring Boot 自动配置原理深度解析
在 Spring 生态系统中,Spring Boot 自动配置是实现 "零配置" 开发的核心特性,通过约定大于配置的理念,自动为应用注入所需的基础设施配置.本文从核心注解.底层机制 ...
- Kong入门学习实践(8)流量控制插件
Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件.一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件.今天,我们就来了解一些常用的流量控制插件. 关于流量控制 ...
- 网络流最大流Dinic算法
感谢董晓老师:博客,b站 /* Dinic算法的思路是,用bfs进行分层,限制后面dfs每次的搜索深度, 并且,在dfs的过程中,直接把当前这个路走到u的容量限制分给u的各个出边 */ #includ ...
- java---前端知识补充
css的定位 相对定位: 相对定位是相对于元素原本的位置进行移动的. 使用方式: position:relative; 绝对定位: 绝对定位是相对于整个页面而言. position:absolute; ...
- android多活动练习--人品计算器
效果图如下: 第二个页面: 显示结果和姓名.性别有关,代码如下: activity_main.xml: 1 <?xml version="1.0" encoding=&quo ...
- 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 ...