shell script
一、shell script的编写与执行
1、shell script 的编写中还需要用到下面的注意事项:
a、命令的执行是从上到下,从左到右地分析与执行
b、命令、参数间的多个空白都会被忽略掉
c、空白行也将被忽略掉, 并且[tab]按键所得的空白同样视为空格键
d、如果读取到一个Enter符号(CR),就尝试开始执行该行(或该串)命令
e、至于如果一行的内容太多,则可以使用“\[Enter]”来扩展至下一行
f、"#"可作为批注。
2、执行文件(/home/sam/shell.sh)
1、直接命令执行: shell.sh文件必须要具备可读与可执行(rx)的权限,然后:
绝对路径: 使用/home/sam/shell.sh来执行
相对路径: 假设工作目录为/home/sam/ , 则使用./shell.sh
变量“PATH”功能: 将shell.sh放在PATH指定的目录内, 例如:~/bin/
2、以bash进程来执行:通过“bash shell.sh”或“sh shell.sh”来执行
3、script的执行方式的区别(source, sh script, ./script)
1、利用直接执行的方式来执行script:
不论是绝对路径/相对路径还是$PATH内, 或者是利用bash(或sh)来执行脚本时,该script都会使用一个新的bash环境来执行(子进程)
2、利用source来执行脚本: 在父进程中执行
二、善用判断式
1、 利用test命令的测试功能
如:test -e /sam && echo "exist" || echo "Not exist"
2、利用判断符号[]
如: [-z "$HOME"] ; echo $?
注意:
a、在括号[]内每个组件度需要有空格键来分隔;
b、在中括号内的变量,最好都以双引号括起来;
c、在中括号内的常量, 最好都以单或双引号括起来。
3、shell script 的默认变量($0 $1 ...)
$0: 执行的脚本文件名
$1,$2,...: 第1,2,...个参数
$#: 代表后接的参数“个数”
$@: 代表“$1”、“$2”、“$3”之意,每个变量是独立的(用双引号括起来)
$*: 代表"$1c$2c$3c$4",其中c为分隔字符, 默认为空格键
shift: 造成参数变量号码偏移
shift 会移动变量, 而且shift后面可以接数字, 代表拿掉最前面的几个参数的意思。
三、 条件判断式
1、利用 if...then
单层:
if [条件判断式]; then
逻辑
fi <--if语句结束语
多重:
if [条件判断式]; then
逻辑
elif [条件判断式]; then
逻辑
else
逻辑
fi
2、利用case...esac判断
case $变量名称 in
"第一个变量内容" )
程序段
;;
"第二个变量内容")
程序段
;;
*)
exit 1
;;
esac
3 、利用function功能
function fname(){
程序段
}
四、循环(loop)
1、while do done, until do done(不定循环)
while [ condition ]
do
程序段落
done
----------》当condition条件成立时,就进行循环
until [ condition ]
do
程序段落
done
-----------》当condition条件成立时,就终止循环
2、for ... do...done(固定循环)
for var in con1 con2 con3...
do
程序段落
done
3、for ...do ...done的数值处理
for((初始值; 限制值; 执行步长))
do
程序段
done
五、shell script的追踪与调试
sh [-nvx] scripts.sh
-n : 不要执行script 仅查询语法的问题
-v: 在执行script前, 先将script的内容输出到屏幕上
-x: 将使用到的script内容显示到屏幕上
shell script的更多相关文章
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- (copy) Shell Script to Check Linux System Health
source: http://linoxide.com/linux-shell-script/shell-script-check-linux-system-health/ This article ...
- shell script练习
执行脚本的几种方式: 1. sh a.sh 或者 bash a.sh 调用的是 /bin/bash 进程执行的,所以脚本不需要执行权限. 2. 直接使用绝对路径执行, /home/script/a ...
- 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script
这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...
- CentOS Linux下一个tomcat起停,查看日志的shell script
CentOS 的tomcat安装目录:/usr/local/tomcat vi MyTomcatUitl.sh 创建文件chmod u+x MyTomcatUtil.sh 赋执行 ...
- Shell script for logging cpu and memory usage of a Linux process
Shell script for logging cpu and memory usage of a Linux process http://www.unix.com/shell-programmi ...
- shell script入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- shell script 的追踪与 debug
shell script 的追踪与 debug scripts 在运行之前,最怕的就是出现语法错误的问题了!那么我们如何 debug 呢?有没有办法不需要透过直接运行该 scripts 就可以来判断是 ...
- 第十三章、学习 Shell Scripts 简单的 shell script 练习
简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...
随机推荐
- C#实现自动发送QQ消息
1.得打开需要发送的聊天窗口,最小化也可,聊天时不能是中文输入法2.然后AIO名就是窗口左上角的那个名称,括号和QQ号不要,那个名称可能是好友备注,群名称,讨论组名称等.3.发送消息要设置成按Ente ...
- 开篇----JavaScript细节的那些事儿
JavaScript现在已经是全世界浏览器通用的语言,目前也完全可以在服务器端做开发,如Node.js,市面上好的JavaScript的书有很多,有的还是经典之作,值得收藏. 趁此东风,打算接下来写一 ...
- WinForm实现对权限菜单进行管理
一.界面: 二.数据库访问类: public class DataClass { private readonly string connect = ConfigurationManager.AppS ...
- 。net新人报道
入行一年多 关注博客园也有半年的时间了 今天开始写第一篇东西 以后有什么笔记也会慢慢写上来的
- 网络库crash以及boost asio strand dispath分析
最近在做服务器的稳定性的相关测试,服务器的网络底层使用的是boost asio,然后自己做的二次封装以更好的满足需求. 服务器昨天晚上发现crash了一次,之前测试了将近半个多月,有一次是莫名的退出了 ...
- chrome中怎么避免最小字体只能为12px
在chrome下,fontSize的像素>=12px,因此不能通过调整html.fontSize=10px来定位rem. 但是我们可以通过设置html{font-size:625%;},p{fo ...
- mysqldump-info
其实很多东西都能在info里面找到非常详细的说明,只是,我们太忙了,只想要一个答案,而无心去看而已,所以呢,就把用得到的都看一下来记录吧. 命令模式:mysqldump [options] [db_n ...
- 5种io模式
1)阻塞I/O(blocking I/O) 发起请求,等待数据报准备好,拷贝数据,数据返回指令 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好 ...
- android驱动开发前的准备(五)
搭建S3C6410开发板的测试环境 首先安装串口调试工具 第一步:检测当前系统是否支持USB转串口 # lsmod | grep usbserial 第二步:安装minicom # apt-get i ...
- Java框架重量级,轻量级的问题?
一般认为,SSH为重量级.SSI为轻量级. 但轻重的概念怎么界定?