1、大部分的Linux系统默认配置bash。对比sh,bash扩展了一些命令和参数,并且保留对sh的一些兼容。除了bash、sh还有csh(语法类似C语言)、tcsh(csh升级版)、ash(适合低内存环境)

2、脚本开头 #!/bin/sh  #!必须有,后面跟上的是shell的路径

3、变量赋值和取值

(1) Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。

variable=value  注意:赋值号左右不能留空格

(2) $后面跟上变量表示读取变量里面的值,特殊情况可以加上{}表示变量的边界

#!/bin/sh
a=
abc=
echo $a
echo ${a}bc
echo $abc

运行结果:

(3) 单引号和双引号的区别:以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量也会把它们原样输出,双引号内的变量才会取值输出

#!/bin/sh
tmp="test"
a="hello world $tmp"
b='hello world $tmp'
echo $a
echo $b

运行结果:

4、Linux命令结果赋值:用反引号(Esc下面、tab上面的点)表示

#!/bin/sh
tmp=`test`
commond=`date`
a="hello world $commond"
echo $a

5、运算符:

(1) expr :一般用于算数运算后面跟上需要运算的算法,需要用反引号,每个参数间要有空格

(2) $((  )): 算法要有空格

(3) let: 算法不能有空格

#!/bin/sh
tmp="test"
a=`expr +`
r=$((*))
let a=a+
echo $r $a a=`expr + `
r=$(( * ))
let a = a +
echo $r $a a=`expr + `
r=$(( * ))
let a=a+
echo $r $a

运行结果:

6、数组定义

(1) 或者

(2) 取值:

7、If...else...if: 和常用编程语言的区别在于结束是用fi表示,每个条件后面要加上then,

(1) 方括号([ ])内的参数之间必须有空格

(2) 多条件判断

8、 case ... esac :类似其他语言的switch ... case,case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。

9、While 循环

10、Shell 函数:可以将可能重复用到的命令封装成一个函数,函数可以带返回值,函数内用return返回,函数外用$?接收返回值。Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。

如果有需要返回其他类型的值,可以在外部定义一个变量,来接受结果。

11、参数:shell脚本可以带参数,在脚本中,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

12、“#”井号表示注释

13、特殊字符

特殊变量

说明

$#

传递给函数的参数个数。

$*

显示所有传递给函数的参数

$?

函数的返回值。

$0

当前脚本的文件名

$$

当前Shell进程ID

-eq

检测两个数是否相等,相等返回 true。

-ne

检测两个数是否相等,不相等返回 true。

-gt

检测左边的数是否大于右边的,如果是,则返回 true。

-lt

检测左边的数是否小于右边的,如果是,则返回 true

-ge

检测左边的数是否大等于右边的,如果是,则返回 true。

-le

检测左边的数是否小于等于右边的,如果是,则返回 true

【Shell】Shell脚本注意事项的更多相关文章

  1. 4.Vim编辑器与Shell命令脚本

    第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...

  2. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...

  3. 【Telnet】使用Telnet协议连接到远程Shell执行脚本

    介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...

  4. shell自动计算脚本

    shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...

  5. Shell菜单脚本

    今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...

  6. shell常见脚本30例

    shell常见脚本30例 author:headsen chen  2017-10-19  10:12:12 本文原素材出自网上,特此申明.有些地方加入我自己的改动 常见的30例shell脚本 1.用 ...

  7. shell常用脚本

    shell常用脚本 author:headsen chen  2017-10-17 15:36:17 个人原创,转载请注明,否则依法追究法律责任 1,vim  name.grep.sh 2,cat   ...

  8. 一篇关于Maven项目的jar包Shell启动脚本

    使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...

  9. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  10. 使用shell解析脚本依赖关系,并自动补数

    将脚本依赖关系放到表中 使用shell解析脚本依赖关系,递归的计算各个脚本. #!/bin/bash # dm 补数 basepath=$(cd ``; pwd) cd $basepath sourc ...

随机推荐

  1. 华硕X550VC安装ubuntu后wifi无法连接问题

    在网上找了很多资料比如重新编译内核,想办法连上有线网络然后更新驱动,下载离线驱动安装包…… 等等方法 其中有些方法实际测试的时候失败了,文章是几年前的,可能缺少某些依赖.上个网都这么麻烦实在让人疲惫. ...

  2. tcp连接过程中的三次握手和四次挥手

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手握手建立连接 @第一次握手: 建立连接是,客户端A发送SYN包到服务器B,并进入SYN_SEND状态,等待B确认. @第二次握手: 服务 ...

  3. Unity---动画系统学习(6)---Avatar Mask动画融合、Layers动画分层、IK反向动力学

    1. 介绍 Avatar Mask(动画融合) 前面我们一直介绍的都是动画混合,一般用于解决边跑边转弯的问题.而动画融合一般用于解决例如边跑边挥手的问题. 简单说就是让跑步去控制腿的骨骼,挥手控制手的 ...

  4. Python如何在子类里扩展父类的property?

    <python cookbook>8.8节讨论子类扩展property时,一开始都晕了,思考了半天才勉强弄懂一点,赶快记下来.废话不多说,先上代码: class Person: def _ ...

  5. 首字母变大写(stringstream的应用)

    Problem Description 输入一个英文句子,将每个单词的第一个字母改成大写字母.   Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行.   O ...

  6. tomcat添加管理后台的用户名和密码(为jenkins连接tomcat用)

    vim  ./conf/tomcat-users.xml <role rolename="admin"/> <role rolename="admin- ...

  7. 【转】LAMBDAFICATOR: Crossing the gap from imperative to functional programming through refactorings

    Link:http://refactoring.info/tools/LambdaFicator/ Problem Description Java 8 will support lambda exp ...

  8. Day45--js基本小结

    JavaScript基本总结 一:基本背景 01:注:ES6就是指ECMAScript 6.(2015 ECMAScript6 添加类和模块) ECMAScript和JavaScript的关系 199 ...

  9. Kibana6.x.x源码分析--JavaScript中 "!~" 这样的符号是啥意思?

    看到源码中有一段JS代码不太懂,如下: 里面这个 "!~" 符号看到后有点儿方啊O__O "…,毛线意思? [查资料,解释如下]: indexOf returns -1 ...

  10. 【算法笔记】B1001 害死人不偿命的(3n+1)猜想

    1001 害死人不偿命的(3n+1)猜想 (15 分)卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...