shell脚本基础-语法
一 变量
[root@T_FOOT-Home2-ZZZ01 ~]# a=hello
[root@T_FOOT-Home2-ZZZ01 ~]# echo $a
hello
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${a}_world
hello_world
其实$a和${a}作用相同,但是为了防止字符串在拼接时,计算机无法区分变量和拼接的字符串,所以需要加上{}
二 提取命令的输出
[root@T_FOOT-Home2-ZZZ01 ~]# pwd
/root
[root@T_FOOT-Home2-ZZZ01 ~]# echo $(pwd)
/root
三 条件赋值(${var:-/=/?/+string})
1 ${var:-string}:是指如果var为空,那么就输出string的值,如果var不为空,那么就输出var的值
2 ${var:=string}:是指如果var为空,那么就输出string的值,并且把string的值赋给var,如果var不为空,那么就输出var的值
3 ${var:?string}:是指如果var为空,那么就输出错误信息 -bash: var: string,如果var不为空,那么就输出var的值
4 ${var:+string}:和${var:-string}相反,如果var为空,那么打印var的值,如果var不为空,那么就打印string的值
四 $((exp))
[root@T_FOOT-Home2-ZZZ01 ~]# echo $((3+2))
5
五 模式匹配替换
${var%pattern},${var%%pattern} 从右边开始匹配
${var#pattern},${var##pattern} 从左边开始匹配
${var%pattern},${var#pattern} 表示最短匹配,匹配到就停止
${var%%pattern},${var##pattern} 表示最长匹配
通配符
*:表示零个或多个任意字符
?:表示零个或一个字符
[...]:表示匹配中括号里面到字符
[!...]:表示不匹配括号里面到字符
[root@T_FOOT-Home2-ZZZ01 ~]# f=a.tar.gz
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f##*.}
gz
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f#*.}
tar.gz
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f%%.*}
a
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f%.*}
a.tar
六 提取字节
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f:0:2}
a.
获取f从下标为0的字节以后两个字节
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f:1}
.tar.gz
提取f从下标为1的字节之后到所有字节
七 字符串替换
${file/dir/path}:将第一个dir 替换为path
${file//dir/path}:将全部dir 替换为 path
${#var}:可计算出变量值${var}的长度
八 输出重定向
echo "hello world" >> tempfile 将hello world复制到tempfile文件中,再打印出来
九 输入重定向
wc << flag
其本质就是把输入到内容缓存下来作为命令输出
十 流程控制
if-then语句
if xx1 then
xx1s
elif xx2 then
xx2s
else
xx3s
fi
十一 case
case ... esac
十二 for
十三 while
十四 until
十五 break和continue
十六 test命令
参照连接 https://blog.csdn.net/aimarrow/article/details/80870180
shell脚本基础-语法的更多相关文章
- 详细介绍Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- shell脚本-基础
shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...
- Linux shell脚本基础学习详细介绍(完整版)二
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- Shell脚本基础学习
Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会 ...
- 什么是Shell?Shell脚本基础知识详细介绍
这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...
- -Shell 教程 Bash 脚本 基础语法 MD
目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 S ...
- 模块一:shell 脚本基础
一.shell脚本介绍 (一)脚本案例及介绍: #!/bin/bash LOG_DIR=/var/log ROOT_UID=0 if ["$UID -ne "$ROOT_UID&q ...
- shell脚本基础知识以及变量
一.基础知识 1.shell脚本的格式注意事项 第一行(一般必须写明):指定脚本使用的shell(若不写明也不影响脚本的执行,系统会自动以sh解析脚本)."#!/bin/bash" ...
随机推荐
- js 实现排序算法 -- 希尔排序(Shell Sort)
原文: 十大经典排序算法(动图演示) 希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩 ...
- DEBUG -- CLOSE BY CLIENT STACK TRACE问题的两种解决方案,整理自网络
1.DEBUG -- CLOSE BY CLIENT STACK TRACE 最近用c3p0遇到各种奇怪的问题,也不知道是它不行还是我不行. 今天又遇到了一个"DEBUG -- CLOSE ...
- 在不重启MySQL的情况下用gdb工具设置变量
前提:此方法只是参考其它博客的一个记录,未经亲自验证 当在mysql客户端设置一些变量时提示如下报错: 于是想能否有办法在不重启的情况下设置这些只读变量,在网上搜索别人的博客后发现如下方法 1.命令行 ...
- React中key的讲解
通过阅读React的文档我们知道React这个框架的核心思想是,将页面分割成一个个组件,一个组件还可能嵌套更小的组件,每个组件有自己的数据(属性/状态);当某个组件的数据发生变化时,更新该组件部分的视 ...
- C++扬帆远航——9(小学生算数程序)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:studentjishu.cpp * 作者:常轩 * 微信公众号 ...
- C++扬帆远航——18(项目五2,递归式)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:qiushi.cpp * 作者:常轩 * 微信公众号:World ...
- Git 程序员篇
关于 Git Git 背后的故事 伟大的作品总是诞生于伟大的时代,正如 Git 同样诞生于一个英雄辈出.极富纷争的年代. 2005 年,Linux 内核开发社区正面临严峻的挑战:他们不能继续使用 Bi ...
- 从0开发3D引擎(补充):介绍领域驱动设计
我们使用领域驱动设计(英文缩写为DDD)的方法来设计引擎,在引擎开发的过程中,领域模型会不断地演化. 本文介绍本系列使用的领域驱动设计思想的相关概念和知识点,给出了相关的资料. 上一篇博文 从0开发3 ...
- 前端每日实战:55# 视频演示如何用纯 CSS 创作一个太阳、地球、月亮的运转模型
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RJjQYY 可交互视频 此视频是可 ...
- java 构造器(构造方法)使用详细说明
知识点 什么是构造器 构造器通常也叫构造方法.构造函数,构造器在每个项目中几乎无处不在.当你new一个对象时,就会调用构造器.构造器格式如下: [修饰符,比如public] 类名 (参数列表,可以没有 ...