【Shell】Shell脚本注意事项
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脚本注意事项的更多相关文章
- 4.Vim编辑器与Shell命令脚本
第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- 【Telnet】使用Telnet协议连接到远程Shell执行脚本
介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...
- shell自动计算脚本
shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...
- Shell菜单脚本
今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...
- shell常见脚本30例
shell常见脚本30例 author:headsen chen 2017-10-19 10:12:12 本文原素材出自网上,特此申明.有些地方加入我自己的改动 常见的30例shell脚本 1.用 ...
- shell常用脚本
shell常用脚本 author:headsen chen 2017-10-17 15:36:17 个人原创,转载请注明,否则依法追究法律责任 1,vim name.grep.sh 2,cat ...
- 一篇关于Maven项目的jar包Shell启动脚本
使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...
- Linux shell编写脚本部署pxe网络装机
Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...
- 使用shell解析脚本依赖关系,并自动补数
将脚本依赖关系放到表中 使用shell解析脚本依赖关系,递归的计算各个脚本. #!/bin/bash # dm 补数 basepath=$(cd ``; pwd) cd $basepath sourc ...
随机推荐
- 「CF140C」 New Year Snowmen
题目链接 戳这 贪心+优先队列,只要每次将数量前三大的半径拿出来就好了,用优先队列维护一下 #include<bits/stdc++.h> #define rg register #def ...
- WebStorm安装与快捷键
WebStorm是JetBrains 推出的一款强大的HTML5编辑工具(特别开发JavaScript非常好用),被JavaScript开发者誉为“web前端开发神奇”.“最强悍的JavaScript ...
- react.js学习之路五
最近没时间写博客,但是我一直在学习react,我发现react是一个巨大的坑,而且永远填不完的坑 关于字符串的拼接: 在react中,字符串的拼接不允许出现双引号“” ,只能使用单引号' ',例如这样 ...
- luoguP3648 [APIO2014]序列分割
https://www.luogu.org/problemnew/show/P3648 同bzoj3675 这题斜率优化+滚动数组就可以了qwq 因为我是在飞机上瞎bb的式子,所以可能会和别的题解的式 ...
- sticky footer布局
一.什么是sticky footer 在网页设计中,Sticky footers设计是最古老和最常见的效果之一.它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块 ...
- asp 文章内容里的图片宽度过大 撑爆页面布局 解决办法
有时候帮朋友做做企业网站,还是asp+access来的快,也经济(不用开数据库空间),fck做的后台内容编辑功能,但是他们传图片的时候不靠谱,图片不管有多宽都直接up上来,把前台页面撑的是面目全非! ...
- python-is,==
在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断 ...
- Codeforces - 912B 位运算
求[1,n]内k的值的异或和使其值最大 k=1是肯定是n k>1,设pos是n的最高位,那答案就是(1ll<<(pos+1))-1 这里用到一个性质是当S=2^i-1时,a xor ...
- PHP的魔术常量(变量)、魔术方法(函数)、超全局变量
https://www.cnblogs.com/ccw869476711/p/9183783.html 一.魔术常量(魔术变量) 概念:所谓的魔术常量就是PHP预定义的一些常量,这些常量会随着所在的位 ...
- spring4.x hibernate4.x 整合 ehcache 注解 annotate
[From] http://my.oschina.net/alexgaoyh/blog/348188