变量的设置

以等号连接,等号两边不能有空格

变量名首个字符必须是英文,可以使用下划线,不能使用标点符号,不能使用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基础复习笔记的更多相关文章

  1. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  2. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  3. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  4. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  5. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  6. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  7. Java基础复习笔记系列 三

    前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿.  Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...

  8. Java基础复习笔记系列 二

    1.Java中Static的相关用法总结?(静态方法:静态变量:静态代码块) public static void main(String args[])执行的关键,在于有static.有了stati ...

  9. WebGIS基础复习笔记

    明天要考试了,突击一下. 1.万维网:www是world wide web的简称是在超文本基础上形成的信息网 2.互联网:即广域局域网及单机按照一定的通讯协议组成的国际计算机网络 3.WebGIS:网 ...

随机推荐

  1. Python__return

    return的注意点: return返回的值, 没有任何类型限制 return是函数结束的标志,函数内可以写多个return,但执行一次,函数就立刻结束,并把return后的值作为本次调用的返回值.

  2. SVN学习一

    svn是subversion的缩写形式. svn是一个版本控制软件. 目标: 1.允许开发同时进行工作. 2.不覆盖其他人的文件变化. 3.保持历史的每一个版本. 版本控制系统分为两类: 1.集中式版 ...

  3. js检测数组类型

    1.instanceof 当只有一个全局执行环境时适用,如果包含多个框架,就存在两个以上不同版本的Array构造函数,如果从一个框架向另一个框架传递数组,传入的数组与在第二个框架中原生创建的数组分别具 ...

  4. Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)

    问题: 在64位机器上了64位的oracle客户端. 然后装上PL/SQL Developer,但是连接oracle老报这个错: Initialization error      SQL*Net n ...

  5. CNN学习笔记:线性回归

    CNN学习笔记:Logistic回归 线性回归 二分类问题 Logistic回归是一个用于二分分类的算法,比如我们有一张图片,判断其是否为一张猫图,为猫输出1,否则输出0. 基本术语 进行机器学习,首 ...

  6. HDOJ 1238 Substrings 【最长公共子串】

    HDOJ 1238 Substrings [最长公共子串] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  7. 针对Oracle表 列字段的增加、删除、修改以及重命名操作sql

    增加字段语法:alter table tablename add (column datatype [default value][null/not null],….); 说明:alter table ...

  8. 修改AdminLTE左侧菜单展开延迟

    AdminLTE左侧菜单展开会有半秒钟的延迟. 看起来会慢半拍. 可修改 admin/dist/js/app.min.js中的 animationSpeed值(默认为500) 如下:

  9. 【Flask】Flask Cookie操作

    ### 什么是cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第 ...

  10. pyqt4学习之一:搭建环境和入门

    还在继续写Python小工具,想起之前用Tkinter被坑得半死,决定换个框架写UI,又想顺便了解一下qt,就学习一下pyqt4 搭建环境 win:现在安装包 http://www.riverbank ...