shell script的简单介绍

shell变量

1.命名规则

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  • 中间不能有空格,可以使用下划线(_)
  • 不能使用标点符号。
  • 不能使用bash里的关键字

2.定义变量:name=value

3.使用变量:$name

4.只读变量:readonly name

5.删除变量:uset name

6.变量类型

  • 局部变量:当前shell有效
  • 环境变量:所有的应用程序有效

shell字符串

  1. 双引号:可解析变量,可以出现转义字符
  2. 单引号:不解析变量,原样输出
  3. 字符串拼接:
name="hello"
# 使用双引号拼接
greeting="hello, "$name" !"
greeting_1="hello, $name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$name' !'
greeting_3='hello, ${name} !'
echo $greeting_2 $greeting_3

输出结果为:

hello, hello ! hello, hello} !
hello, hello ! hello, ${name} !
  1. 获取字符串长度
string="abcd"
echo ${#string} #输出 4
  1. 提取子字符串
string="hello world"
echo ${string:1:4}#输出 ello
# 字符串下标从0开始
  1. 查找子字符串
string="hello world"
echo `expr index $string e`#输出2

7.反引号和$()一样,里面的语句当作命令执行

shell数组

  1. 数组定义:arrname=(value0 value1 value3)
  2. 数组读取:${arrname[]},中括号内为数组下标,从0开始
  3. 获取数组长度:length=${#arrname[@]},*号也可以
  4. 或许数组单个元素的长度:lengthn=${#arrname[n]},n为数组下标

shell注释

  1. 单行注释:#
  2. 多行注释:<<EOF以EOF结束,EOF可以是任意字母

shell传递参数

  1. 向脚本传参
  • $0:执行的文件名
  • $1:为第一个参数
  • $2:为第二个参数 以此类推
  1. 特殊参数
  • $#:传递到脚本的参数个数
  • $$:脚本运行的当前进程ID
  • $!:后台运行的最后一个进程ID
  • $?:回传码,显示最后命令的退出状态
  • $@,$*:显示所有传递的参数

shell运算符

  1. 算数运算符

假设变量a=10,b=20

运算符 说明 举例
+ 加法 expr $a + $b 结果为 30。
- 减法 expr $a - $b 结果为 -10。
* 乘法 expr $a \* $b 结果为 200。
/ 除法 expr $b / $a 结果为 2。
% 取余 expr $b % $a 结果为 0。
= 赋值 a=$b 将把变量 b 的值赋给 a。
== 相等 用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
!= 不相等 用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
  1. 关系运算符
运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
  1. 逻辑运算符
运算符 说明 举例
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
  1. 布尔运算符
运算符 说明 举例
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
-o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false
  1. 字符串运算符

    假设变量a=hello,b=world
运算符 说明 举例
= 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n "$a" ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true
  1. 文件测试运算符
操作符 说明 举例
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true

流程控制

  1. if 语句语法格式:
if condition
then
command1
command2
...
commandN
fi
  1. if else 语法格式:
if condition
then
command1
command2
...
commandN
else
command
fi
  1. if else-if else 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi

for循环一般格式为:

for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
  1. while 循环一般格式
while condition
do
command
done
  1. until 循环一般格式
until condition
do
command
done
  1. case in格式
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
  1. 跳出循环:
  • break跳出所有循环
  • continue跳出当前循环

函数定义

输入输出重定向

  1. 文件描述符
  • 标准输入 0
  • 标准输出 1
  • 标准错误输出 2
  1. stdin<file 标准输入重定向
  2. stdout>file 标准输出重定向
  3. stderr>>file 标准错误输出重定向,以追加的方式

shell文件包含

  1. .filename
  2. source filename

shell script的简单使用的更多相关文章

  1. shell script 的简单介绍

    一 什么叫shell script (程序化脚本)? shell script 是利用 shell 的功能所写的一个 “程序”(program),这个程序是使用纯文本文件,将一些 shell 的语法与 ...

  2. 第十三章、学习 Shell Scripts 简单的 shell script 练习

    简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...

  3. shell script简单笔记

    变量 shell script是一种脚本语言,变量的定义是通过 myName=HYB 这样的形式定义的. 当存在空格时,可以通过双引号或单引号将其变为字符串.双引号不进行转义,单引号将内容进行转义为一 ...

  4. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  5. shell script入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  6. shell script 的追踪与 debug

    shell script 的追踪与 debug scripts 在运行之前,最怕的就是出现语法错误的问题了!那么我们如何 debug 呢?有没有办法不需要透过直接运行该 scripts 就可以来判断是 ...

  7. linux基础之Shell Script入门介绍

    本文介绍下,学习shell script编程的入门知识,通过几个入门实例,带领大家走进shell script的神圣殿堂,呵呵,有需要的朋友参考下. 本文转自:http://www.jbxue.com ...

  8. bash shell学习-shell script基础 (笔记)

    A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版)  Linux ...

  9. 菜鸟教程之学习Shell script笔记(中)

    菜鸟教程Shell script学习笔记(中) 以下内容是学习菜鸟教程之shell教程,所整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-sh ...

随机推荐

  1. 使用npm发布插件

    使用npm发布插件 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 npm是一个全球性的包管理工具,上面有着许许多多的前端 ...

  2. Spring mvc的基本配置及工作原理

    1.spring mvc框架搭建 需求:在浏览器输入一个请求login.do,跳转到登录成功界面. 第一步,创建web项目,导入jar包 注意: 第二步,在web.xml中配置spring的核心监听器 ...

  3. react中redux的理解

    定义 redux可以看作是flux的进阶版,主要用于react中公共状态(数据)的管理 redux底层原理 redux有一个createStore方法,这个方法用户创建公共存储空间,createSto ...

  4. 第十章:Python高级编程-多线程、多进程和线程池编程

    第十章:Python高级编程-多线程.多进程和线程池编程 Python3高级核心技术97讲 笔记 目录 第十章:Python高级编程-多线程.多进程和线程池编程 10.1 Python中的GIL 10 ...

  5. Kitty Cloud(HTTP_RPC)的全局异常处理

    项目地址 https://github.com/yinjihuan/kitty-cloud 异常处理不用我讲,大家都清楚.单独的异常处理太繁琐,全局异常处理可以在一个应用中统一进行异常的处理,非常方便 ...

  6. JDBC01 mysql和navicat的安装

    navicat的安装 从网上下载的,详细过程,略 mysql8.0.11(win10,64)安装 1.下载 MySQL8.0 For Windows zip包下载地址:https://dev.mysq ...

  7. [hdu4513]常规dp

    题意:给一个长度为m的序列,从里面选出一些数,相对位置不发生变化,并满足a[i]=a[n-i],a[1]<a[2]<...<a[(n+1)/2],n是数的个数,求最大的n 思路:dp ...

  8. 盘点6个Kubernetes监视工具

    导读:监控可帮助您确保Kubernetes应用程序平稳运行并排除可能出现的任何问题.Prometheus是一种流行的开源监视工具,许多公司都使用它来监视其IT基础结构.但是,还有许多其他监视工具可用. ...

  9. SpringMVC 类型转换错误自定义返回

    在SpringMVC捕获异常只需要实现接口org.springframework.web.servlet.HandlerExceptionResolver,即可自定义返回异常,如:属性转换异常 @Re ...

  10. java ->基本数据类型与包装类的概述和转化

    基本类型 包装类概述 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需 ...