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 ...
随机推荐
- Linux搭建SVN服务器
1 安装SVN 官网下载:http://subversion.apache.org/packages.html SVN客户端:TortoiseSVN,官网下载:http://tortoisesvn.n ...
- The import javax.servlet cannot be resolved
在STS中,突然把配置的Tomcat删除,换另外一个Tomcat使用时,出现:The import javax.servlet cannot be resolved.这个错误可能是服务器自带的serv ...
- Python 程序员经常犯的 10 个错误
关于PythonPython是一种解释性.面向对象并具有动态语义的高级程序语言.它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得... 关于Python Python是一种解释性.面向对 ...
- 判断App运行是否在前台
转自:http://notes.stay4it.com/2016/02/26/check-if-app-is-running-forground/ 在一些场景中,经常会需要判断App是否在后台运行,比 ...
- 几个linux终端的有趣玩法
1.sl 还可以给别人搞恶作剧: alias ls=sl 这样别人使用 ls 列出目录和文件的时候,却出现一个小火车,那滋味一定很酸爽哈哈哈哈! 2. fortune 这个命令会随机输出有趣的话,比如 ...
- getElementById,getElementsByName,getElementsByTagName的区别
1.getElementById 作用:一般页面里ID是唯一的,用于准备定为一个元素 语法: document.getElementById(id) 参数:id :必选项为字符串(String) 返回 ...
- 内省(introspector)------>JavaBean
内省(introspector)------>JavaBean 1.问什么要学内省? 开发框架时,经常需要Java对象的属性来来封装程序的数据,每次使用反射技术完成此操作过于 ...
- Hot code replace failed
今天在eclipses中 修改代码,保存时会出时不时出现Hot code replace failed 对话框,谷歌提示是在debug模式下保存修改源代码会出现此类问题.确实,刚刚在用debug功能, ...
- 关于JS的总结
=============================================事件:(事件必须小写) 用户的操作 onclick onmouseover onmouseout======= ...
- Servlet高级
1. 获取初始化参数 在web.xml中配置Servlet时,可以配置一些初始化参数.而在Servlet中可以通过ServletConfig接口提供的方法来取得这些参数. index.jsp < ...