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 ...
 
随机推荐
- js 双向绑定数据
			
let aaa = []; let bbb = [1,2,3]; let ccc = [0,9,8]; aaa = bbb; //此时aaa与bbb被绑定(aaa指向bbb的指向) ,若使用push则 ...
 - 11、增强型for循环对二维数组的输出(test8.java)
			
由于笔者原因,这部分知识,尚不能整理出代码,笔者会好好学习增强型for循环中迭代起的相关知识,在笔者有能力,书写好这段代码后,将对本篇文章,进行二次修改,也同时欢迎大家与笔者交流,共同学习,共同进步. ...
 - UML类图(1.3)
			
UML:Unified modeling Language 统一建模语言 UML类图:用来描述系统所包含的类以及类之间的关系. 画图工具:https://www.processon.com 类之间的6 ...
 - 洛谷 P5367 【模板】康托展开(数论,树状数组)
			
题目链接 https://www.luogu.org/problem/P5367 什么是康托展开 百度百科上是这样说的: “康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. ...
 - ZooKeeper实现生产-消费者队列
			
[欢迎关注公众号:程序猿讲故事 (codestory),及时接收最新文章] 生产-消费者队列,用于多节点的分布式数据结构,生产和消费数据.生产者创建一个数据对象,并放到队列中:消费者从队列中取出一个数 ...
 - 前端面试题集锦(一)之HTML部分
			
前端的发展日新月异,前端开发也早已从原来的切图套页面,变成了现在的非常复杂的技术体系,近期由于找工作,面试了很多家单位,也总结了一部分前端面试中经常会遇到的面试类型,并一一解答.主要分为HTML.CS ...
 - 100天搞定机器学习|day38 反向传播算法推导
			
往期回顾 100天搞定机器学习|(Day1-36) 100天搞定机器学习|Day37无公式理解反向传播算法之精髓 上集我们学习了反向传播算法的原理,今天我们深入讲解其中的微积分理论,展示在机器学习中, ...
 - Springboot源码分析之jar探秘
			
摘要: 利用IDEA等工具打包会出现springboot-0.0.1-SNAPSHOT.jar,springboot-0.0.1-SNAPSHOT.jar.original,前面说过它们之间的关系了, ...
 - 教你如何认识人脸识别开发套件中的双目摄像、3D结构光摄像头、单目摄像头的区别及详细讲解
			
深圳市宁远电子提供的人脸识别模组可支持双目摄像头和3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比单目的成本高,区别在哪里,他们的适用于哪些场景呢?在此,深圳市宁远电子技术工程师就为大家详细 ...
 - Linux环境搭建 | 手把手教你配置Linux虚拟机
			
在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度. Ubuntu刚安装完毕之后,还无法进行开发 ...