Shell 编写摘要 (一)
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=025)
本文发布于 2016-08-25 17:06:11,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=025)
环境说明
无
前言
无
Shell
注释:本文中主要参考《shell脚本学习指南》和自己的理解所写而成
- Shell 变量问题
算术展开:
$((算术表达式)) 返回表达式的值
eg: echo $((1+2*3)) 返回7
变量替换(主要还是用来测试一个变量是否定义且不为空):
$(varname:-0) varname未定义或者为null,返回0
用处:用于测试变量是否定义
$(varname:=0) varname未定义或者为null,给varname赋值0
用处:用于给未定义变量赋初值
$(varname:?msg) varname未定义或者为null,返回msg
用处:用于当变量未定义时,提示一个信息
$(varname:+1) varname定义或者不为null,返回1
用处:用于测试变量已经存在切不为null,返回1
位置参数(用于向脚本传入参数):
${num} 获取传入num'th的值
$# 返回传入参数总的个数
$@ 以多个字符串方式返回所有传入参数
$* 以一个字符串方式返回所有传入参数
特殊符号:
$? 最近命令执行的返回值,0 表示成功执行,非0 表示有异常
- Shell 脚本流控制
逻辑运算
test 等效于 [ ...... ]
eg: test "$var" = "$var1" 等效 [ "$var" = "$var1" ]
下面是非常重要的test 选项表
if 控制语句
格式:
if pipeline
then
......
elif pipeline
then
......
else
......
fi
for 控制语句(支持continue,break)
格式:
for var [in list]
do
......
done
while 控制语句(支持continue,break)
格式:
while condition
do
......
done
until 控制语句(支持continue,break)
格式:
until condition
do
......
done
- 脚本函数
函数定义(支持return 从函数返回):
functionName(){
........
return val
}
函数调用(特殊变量$#,$@,$*等特殊位置变量会被临时覆盖):
funcitonName arg0 arg1 arg2 ...
后记
无
参考文献
无
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
Shell 编写摘要 (一)的更多相关文章
- Linux shell编写脚本部署pxe网络装机
Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...
- Shell编写字符菜单管理-8
第8章 Shell编写字符菜单管理 一.shell函数定义function menu(){ echo 'this is a func!!';} 二.shell函数使用menu 三.cat命令的here ...
- Linux shell编写端口扫描脚本
Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...
- 树莓派(Raspberry Pi)使用Shell编写的极简Service
树莓派(Raspberry Pi)运行的系统是基于Debian的,不仅可以运行Shell,还支持systemd和docker,可以编写一个简单的服务,让其在启动时运行,执行一些自动化的操作.这里在Ra ...
- Shell编写8点建议
这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生 ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- shell编写一个批量添加用户脚本
shell编写一个批量添加用户脚本 5.1问题 本例要求在虚拟机server0上创建/roo ...
- shell编写一个判断脚本
shell编写一个判断脚本 4.1问题 本例要求在虚拟机server0上创建/roo ...
- shell编写mysql备份工具
如需转载,请经本人同意. 这是之前写的一个备份脚本,调用的备份工具是xtrabackup 编写思路是:每周一全备份,备份后提取lSN号,对备份文件进行压缩,其余时候在LSN的基础上进行增量备份,并对3 ...
- IBM AIX Shell编写遭遇错误一2
在IBM AIX 5.3平台上,编写一个shell的时候遇到几个错误. 0. exp: 0403-027 The parameter list is too long 看这个提示是说命令行长度太长了, ...
随机推荐
- DbgridEh 导出 Excel 如果字段长度超过255会截断,那如何导出,另一种神奇的方法
由于DbgridEh 导出 Excel 如果字段长度超过255会截断,所以必须换一种方法来导出,百度 谷歌 看了上百帖,都是有这句: xlApp := CreateOleObject('Excel. ...
- MindSponge分子动力学模拟——定义Collective Variables
技术背景 在前面的几篇博客中,我们介绍了MindSponge分子动力学模拟框架的基本安装和使用和MindSponge执行分子动力学模拟任务的方法.这里我们介绍一个在增强采样领域非常常用的工具:Coll ...
- 【OpenGL ES】透视变换原理
1 前言 MVP矩阵变换 中主要介绍了模型变换(平移.旋转.对称.缩放)和观测变换基本原理,本文将介绍透视变换的基本原理. 如下图,近平面和远平面间棱台称为视锥体,表示可见区域范围,视锥体以外 ...
- 解决springboot整合freemarker页面跳转404
问题说明 spring boot 2.1.5集成freemarker时跳转报404! 集成过程说明 pom.xml <dependency> <groupId>org.free ...
- Vmware中Linux通过NAT设置静态IP实现上网
1.设置虚拟机上网方式为NAT 2.修改centos网络配置文件,我的是centos7.4,主要网关不能和主机设置的一致 [root@dylan-centos ~]# vi /etc/sysconfi ...
- ysoserial URLDNS利用链分析
在分析URLDNS之前,必须了解JAVA序列化和反序列化的基本概念.其中几个重要的概念: 需要让某个对象支持序列化机制,就必须让其类是可序列化,为了让某类可序列化的,该类就必须实现如下两个接口之一: ...
- 《系列二》-- 3、FactoryBean 的使用
目录 FactoryBean 解决的问题 FactoryBean 接口初识 改造结果 最后的补充 回顾下 FactoryBean 的应用 factory-method 和 factory-bean 的 ...
- C++ 虚基类
虚基类(Virtual Base Class)在面向对象编程中的作用是解决多重继承中的菱形继承问题(Diamond Inheritance Problem)和共享基类问题(Shared Base Cl ...
- 第一百零四篇:DOM事件流
好家伙,JS基础接着学, 1.事件流 页面哪个部分拥有特定的事件? 可以把页面想象成一个同心圆, 当你戳了其中的一点,其实你同时戳中了很多个圆 当你点击一个页面中的按钮,实际上你同时点击了这个 ...
- 【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com
问题描述 在App Service for Linux环境中,部署PHP应用,使用Nginx服务器.因为PHP应用中所有静态资源的URL使用的默认域名为 https://example.com:808 ...