shell基础复习笔记
变量的设置
以等号连接,等号两边不能有空格
变量名首个字符必须是英文,可以使用下划线,不能使用标点符号,不能使用bash里的关键字
可以使用转义字符\将特殊符号(如Enter、$、空格、!等)变成一般字符
关于单引号,双引号的说明
单引号里的任何字符都会原样输出,单引号里的变量是无效的,单引号中不能再出现单引号
双引号里可以出现转义字符,双引号中不能再出现双引号
变量的显示
echo ${变量} 或 echo $变量
eg:
path=/usr/local
echo ${path} 或 echo $path
shell的特殊变量
$$ 当前shell进程ID,就是这个脚本的pid
$0 当前文件名
$n 去传递给脚本的参数,n是几就取第几个参数
$# 取参数的个数
$@ 取所有参数,被双引号“”包含时,与$*稍有不同
$* 取所有参数
$? 最后命令的退出状态,0表示没有错误,其他任何值表明有错误
shell的算数运算
+ 加
- 减
* 乘
/ 除
% 取余
eg:i=$((5-2)) i的值为3
echo $(($a+$b))
echo $(($a-$b))
echo $(($a*$b))
echo $(($a/$b))
echo $(($a%$b))
shell关系运算符
关系运算符
-eq 检测两个数是否相等,相等返回true
-ne 检测两个数是否相等,不相等返回true
-qt 检测左边的数是否大于右边的数,如果是,返回true
-lt 检测左边的数是否小于右边的数,如果是,返回true
-ge 检测左边的数是否大于等于右边的数,如果是,返回true
-qg 检测左边的数是否小于等于右边的数,如果是,返回true
布尔运算符
! 非,表达式为true则返回false,否则返回true
-o 或运算,有一个表达式为true,返回true
-a 与运算,两个表达式都为true才返回true
字符串运算符
== 检测两个字符串是否相等,相等返回true
!= 检测两个字符串是否相等,不相等返回true
-z 检测字符串长度是否为0,为0返回true
-n 检测字符串长度是否不为0,不为0返回true
str 检测字符串是否为空,不为空返回true
文件测试运算符列表
-d file 检测文件是否是目录,如果是,返回true
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true
-w file 检测文件是否可写,如果是,则返回true
-x file 检测文件是否可执行,如果是,则返回true
-s file 检测文件是否为空(文件大小是否大于0),部位空返回true
-e file 检测文件(包括目录)是否存在,如果是,返回true
shell注释
#开头的就是注释,shell中没有多行注释,只能每一行加一个#
shell字符串的操作
字符串定义可以用双引号、单引号,也可以什么都不用
eg:a=test
a="test"
a='test'
字符串拼接,直接把一个字符串跟到另一个字符串后面即可
eg:name=emily
say="hello,$name!"
say="hello,"$name"!"
say=hello,$name!
获取字符串长度,使用#
eg:str=studyshell
echo ${#str}
获取字符串的某个元素
eg:str="shell is a easy language"
echo ${str:2:4} #下标是从0开始
结果为:ell
shell数组操作
定义数组
在Shell中,用括号来表示数组,数组元素用“空格”符号分隔开,不像其他语言中用逗号分隔,shell中只支持一维数组,数组的下标可以不连续
eg:array=(value1 value2 value4)
也可以通过下标赋值的方式定义一个数组
eg:array[3]=2 array[5]=test
数组的取值 ${数组名字[下标]}
eg:${array[1]}
获取数组所有元素
eg:${array[*]} 或者 ${array[@]}
获取数组长度
eg:${#array[*]}
shell的if判断
if ... fi
if ... else ... fi
if ... elif ... else ... fi
语法如下:
if [ 条件表达式 ]
then 命令
else
命令
fi
if [ 条件表达式一 ]
then 命令
elif [条件表达式二]
then
命令
else
命令
fi
shell的case判断
case $变量名称 in
变量值1)
命令
;;
变量值2)
命令
;;
*)
命令
;;
esac
shell的for循环
for 变量 in 列表
do
命令
done
shell的while循环
while 条件
do
命令
done
shell的函数
function 函数名( )
{
命令表
return xx
}
函数应先定义,后使用
调用函数时,直接利用函数名,如showfile,不必带圆括号
shell脚本与函数间的参数传递可利用位置参数和变量直接传递
通常,函数中的最后一个命令执行之后,就退出被调函数。也可利用return命令立即退出函数,其语法格式是:return [ n ]
shell基础复习笔记的更多相关文章
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- Java基础复习笔记系列 二
1.Java中Static的相关用法总结?(静态方法:静态变量:静态代码块) public static void main(String args[])执行的关键,在于有static.有了stati ...
- WebGIS基础复习笔记
明天要考试了,突击一下. 1.万维网:www是world wide web的简称是在超文本基础上形成的信息网 2.互联网:即广域局域网及单机按照一定的通讯协议组成的国际计算机网络 3.WebGIS:网 ...
随机推荐
- soe结果为栅格的处理方式
背景 ArcGIS for Server通过rest的形式提供功能在很多的时候,不能满足实际的需求.在日常工作中需要对Server的功能进行扩展,esri提供的一种方式就是使用soe的形式.官方给出的 ...
- MySQL给字段唯一索引的三种方法
建表时添加 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `stu_id` ) NOT NULL AUTO_INCREMENT, ` ...
- mysql大数据查询优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 0407-服务注册与发现-Eureka深入理解-元数据、高可用HA
一.Eureka元数据 参看地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_e ...
- Mysql学习笔记—索引
一.什么是索引 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...
- 解读tensorflow之rnn 的示例 ptb_word_lm.py
这两天想搞清楚用tensorflow来实现rnn/lstm如何做,但是google了半天,发现tf在rnn方面的实现代码或者教程都太少了,仅有的几个教程讲的又过于简单.没办法,只能亲自动手一步步研究官 ...
- java 多线程 day04 线程通信
package com.czbk.thread; /** * Created by chengtao on 17/12/3. * 需求: 子线程先运行10次,然后主线程运行 100次,依次运行50次 ...
- 科班学习java遇到瓶颈,每天云里雾里怎么办?
声明:这个问题困扰了我好久,今天在知乎找到了答案.知乎链接https://www.zhihu.com/question/24240982,感谢大神@Tony He的回答. 作者:Tony He链接:h ...
- POJ - 3177 Redundant Paths (边双连通缩点)
题意:在一张图中最少可以添加几条边,使其中任意两点间都有两条不重复的路径(路径中任意一条边都不同). 分析:问题就是最少添加几条边,使其成为边双连通图.可以先将图中所有边双连通分量缩点,之后得到的就是 ...
- java字节码理解-入门
前记:作为一名JAVA Developer,每次打开Eclipse,查找一个没有源码的类时,都会看到一个这样的画面: 大意是:这个jar文件,没有附带源码.紧接着后面的就看不懂了,很好奇下面的一部分是 ...