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 ...
随机推荐
- JNDI----数据连接池
JNDI:提供了查找和访问各种命名和目录服务的通用,统一的接口 常用的配置属性: name:表示以后要查找的名称.通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是 ...
- koa2图片上传成功后返回服务器地址,实时显示服务器图片
版本:node(8.5.0); koa(2.4.1); koa-router(7.3.0); koa-body(2.5.0); koa-static(4.0.2); 代码实现 const fs = r ...
- SQL中一些实用的快捷键
Ctrl+A全选 快速选中一行: 若光标在这条语句末尾用Shift+Home 若光标在这条语句开头用Shift+End Ctrl+K+U快捷注释本行 Ctrl+K+C反注释 Ctrl+R 关闭下面的 ...
- ABAP 查看采购订单行项目已开票金额和已清金额
FUNCTION zmm_fm_po_invence. *"----------------------------------------------------------------- ...
- 白话--长短期记忆(LSTM)的几个步骤,附代码!
1. 什么是LSTM 在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义.我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考.我们的思想拥有持久性.LSTM就 ...
- 调试应用不发愁,免安装的 curl 来帮忙
1 cURL简介 cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具.cURL还包含了用于程序开 ...
- 如何在GitHub上上传自己本地的项目?(很适合新手使用哦!)
这是我看了一些大佬们的博客后,尝试了几次,终于成功了上传项目,所以想做一下总结,以便以后查看,同时想分享给才接触GitHub的新手们,希望能够有所帮助~ 条条大路通罗马,上传的方法肯定不止一种,等我学 ...
- 定时清理docker私服镜像
定时清理docker私服镜像 使用CI构建docker镜像进行发布极大促进了大家的版本发布效率,于是镜像仓库也就急速膨胀.为了缓解磁盘压力,我们需要设置一些清理策略. 对于不同docker镜像的清理策 ...
- ZooKeeper 相关概念以及使用小结
Dubbo 通过注册中心在分布式环境中实现服务的注册与发现,而注册中心通常采用 ZooKeeper,研究注册中心相关源码绕不开 ZooKeeper,所以学习了 ZooKeeper 的基本概念以及相关 ...
- AVL树(二叉平衡树)详解与实现
AVL树概念 前面学习二叉查找树和二叉树的各种遍历,但是其查找效率不稳定(斜树),而二叉平衡树的用途更多.查找相比稳定很多.(欢迎关注数据结构专栏) AVL树是带有平衡条件的二叉查找树.这个平衡条件必 ...