shell常用标识符及应用范例
前言:
Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里以备查看。
一、基础篇
1.对文件的判断:(命令执行成功返回值是0,不成功则是非0)
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
2.逻辑判断标识:
-eq //等于
-ne //不等于
-gt //大于 (greater )
-lt //小于 (less)
-ge //大于等于
-le //小于等于
3.特殊变量列表:
| 变量 | 含义 | 
| $0 | 当前脚本的文件名 | 
| $n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 | 
| $# | 传递给脚本或函数的参数个数。 | 
| $* | 传递给脚本或函数的所有参数。 | 
| $@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 | 
| $? | 上个命令的退出状态,或函数的返回值。 | 
| $$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 | 
4.特殊字符的表达:
\b 退回  
\c 打印一行时没有换行符 这个我们经常会用到  
\f 换页  
\r 回车  
\t 制表  
\v 垂直制表  
\\ 反斜线本身
5.运算符及其优先级:
| 级别 | 运算符 | 说明 | 
| 13 | -, + | 单目负、单目正 | 
| 12 | !, ~ | 逻辑非、按位取反或补码 | 
| 11 | * , / , % | 乘、除、取模 | 
| 10 | +, - | 加、减 | 
| 9 | << , >> | 按位左移、按位右移 | 
| 8 | < =, > =, < , > | 小于或等于、大于或等于、小于、大于 | 
| 7 | = = , ! = | 等于、不等于 | 
| 6 | & | 按位与 | 
| 5 | ^ | 按位异或 | 
| 4 | | | 按位或 | 
| 3 | && | 逻辑与 | 
| 2 | | | | 逻辑或 | 
| 1 | =, + =, - =, * =, /=, % =, & =, ^ =, | =, << =, >> = | 赋值、运算且赋值 | 
二、基础循环及其应用范例:
1.单if与if/elif嵌套:
if 条件表达式  
then #当条件为真时执行以下语句  
命令列表  
else #为假时执行以下语句  
if 条件表达式  
then #当条件为真时执行以下语句  
命令列表
elif #当条件为真时执行以下语句
命令列表
elif #当条件为真时执行以下语句
命令列表
else #执行以下语句
命令列表
2.case多分支结构:
case $newval in
1) #这里是可能值1
echo 1
;; #表示第一个分支结束
2) #这里是可能值 2
echo 2
;; #第二个分支结束
*) #表示其他可能值,必须在最后,否则他后面的语句无法执行
echo unkown
esac #case 语句结束
3.for枚举法与累加格式:
枚举:
for n in {1..10}
do
echo $n
done
累加:
for (( i=1;$i<10;i++))
do
echo $i
done
for(( i=1;$i<10;i=$[$i+1’ ])
do
echo $i
done
4.while循环读取 文本:
while read filename
do
echo $filename
done < names.txt
三、一些注意事项:
1.break 命令不执行当前循环体内break下面的语句从当前循环退出.
continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行.
2.将脚本或者命令放到后台执行:
1)在命令后加上 & 字符来实现,需要注意的是输出进程号:sh 1.sh &
2)在命令前使用:nohup command > log.file 2>&1 &
3)将后台运行的程序切回到前台:#fg %2
3.匹配IP地址:
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\ 匹配是否为IP地址
4.shell自增的五种办法:
i=`expr $i + 1`;
 let i+=1;
 ((i++));
 i=$[$i+1];
 i=$(( $i + 1 ))
另外,对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;实例如下:
#!/bin/bash
for j in $(seq 1 5)
do
  echo $j
done
shell常用标识符及应用范例的更多相关文章
- 【shell 大系】Linux Shell常用技巧
		在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ... 
- Linux系统重要快捷键& Shell 常用通配符
		[Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ... 
- shell 常用正则
		shell常用正则表达式 “^\d+$” //非负整数(正整数 + 0) “^[0-9]*[1-9][0-9]*$” //正整数 “^((-\d+)|(0+))$” //非正整数(负整数 ... 
- Hbase Shell常用命令
		hbase shell常用的操作命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,通过h ... 
- (转)Hbase shell 常用命令(1)
		Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ... 
- hbase基本概念和hbase shell常用命令用法
		1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ... 
- Linux Shell常用技巧(目录)
		Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ... 
- 【转载】HBase基本概念和hbase shell常用命令用法
		1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ... 
- HBase shell 常用指令
		HBase shell 常用指令 连接HBase $ ./bin/hbase shell 打开帮助 hbase(main):001:0> help 创建表 hbase(main):003:0&g ... 
随机推荐
- Template(模板)模式
			第三章:模板模式 Template模式比较简单,是基于继承关系的一种设计模式,由父类定义处理流程框架,由子类中实现具体处理. Code: package example.template; /*** ... 
- pipreqs 生成requirements.txt文件时编码错误问题
			1,首先安装pipreqs --> pip install pipreqs 2.生成相应项目的路径 --> pipreqs e:\a\b 在此时可能会遇见 UnicodeDecodeE ... 
- Vue系列:Websocket 使用配置
			WebSocket 是什么? WebSocket 是一种网络通信协议.而且是在 HTML5 才开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. 为什么需要 WebSocket ? 了解计算 ... 
- Maven多模块项目打包前的一些注意事项(打包失败)
			一. 最近在打包Maven项目时遇到了点问题,这个项目是Maven多模块项目,结构如下: projectParent├── xxxx-basic├── xxxx-web1├── xxxx-collec ... 
- 深入理解 linux磁盘顺序写、随机写
			一.前言 ● 随机写会导致磁头不停地换道,造成效率的极大降低:顺序写磁头几乎不用换道,或者换道的时间很短 ● 本文来讨论一下两者具体的差别以及相应的内核调用 二.环境准备 组件 版本 OS Ubunt ... 
- BFS-迷宫问题
			问题描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ... 
- IntelliJ IDEA提升效率开发插件必备
			工欲善其事,必先利其器,好的工具可以提升我们的开发效率,下面介绍几款个人觉得比较好的编辑器插件,不仅炫酷更重要可以提高你的工作效率. 本文是作者辛苦整理的16款插件,每个都是超级实用的,不好不介绍,相 ... 
- Mysql5.6对时间的处理精度问题
			在业务处理需要使用new Date()来更新时间类型的字段时,数据库会对时间类型进行四舍五入处理,如果new Date()的更新时间与原时间间隔太短,数据库进行四舍五入之后,认为值没有变化,从而不更新 ... 
- 性能测试学习第六天-----JMeter拓展应用
			一.TCP取样器 服务器名称或IP:填写socket接口的ip 端口号:写socket接口的端口号 Re-use connection:是否重用链接,如果选择,同一个线程执行的所有请求都会使用一个tc ... 
- 如何在onCreate中获取View的高度和宽度
			如何在onCreate中获取View的高度和宽度 原文链接:http://mp.weixin.qq.com/s?__biz=MzAwODE1NTI2MQ==&mid=2247483676&am ... 
