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 ...
随机推荐
- re模块详解
#!/usr/bin/env python #-*- coding:UTF-8 -*- ##################################################### # ...
- isKindOfClass,isMemberOfClass
- (BOOL)isKindOfClass:(Class)aClass; - (BOOL)isMemberOfClass:(Class)aClass; 特点: 1.isKindOfClass 判断 ...
- D - 图论
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Descr ...
- 十分钟了解分布式计算:Spark
Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD的设计思路,及其在内存上的容错.内容基于论文 Zaharia, Matei, et al. "Resili ...
- PHP连接MySQL数据库
PHP连接MySQL数据库 既然现在你看到了这篇文章,说明你肯定知道PHP和MySQL是怎么一回事,我就不啰嗦了.但为什么你还要继续阅读此文呢?可能是以前你习惯复制粘贴一些代码,并没有真正弄懂代码的含 ...
- template 不能分别在.h和.cpp中定义模板
先上代码: #ifndef SEQLIST_H #define SEQLIST_H #include <iostream> ; template <typename type> ...
- 如何处理json数据
1. 前台处理方式之一: ★jQuery.parseJSON(json) var parsej = $.parseJSON(data); ...
- Codeforces Round #171 (Div. 2)
A. Point on Spiral 由于坐标\(.|x|.|y| \le 100\),所以可直接bfs计算. 若数据较大,需要找规律. B. Books 维护窗口\([l,r]\),使\(\sum_ ...
- JAVA的单例模式与延时加载
延迟加载(lazy load)是(也称为懒加载),也叫延迟实例化,延迟初始化等,主要表达的思想就是:把对象的创建延迟到使用的时候创建,而不是对象实例化的时候创建.延迟加载机制是为了避免一些无谓的性能开 ...
- 使用RXTX获取电脑串口
RXTX是javacomm串口通信的一个扩展 RXTX开发所需文件的下载地址:http://rxtx.qbang.org/wiki/index.php/Download 解压之后可以看到支持各个平台的 ...