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 ...
随机推荐
- 分享一些DICOM数据下载网站
医院的DICOM数据轻易不让拷出来,所以这里列出一些医学数据,但不局限于DICOM数据网址,供大家下载. 斯坦福大学体数据库(RAW DATA) http://graphics.stanford.ed ...
- 适配布局-ios
// 系统的约束代码 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView *superVi ...
- iredmail安装脚本分析(三)---conf/global DISTRO值的来源及操作系统的判断
作者在引入conf/global 文件时,就已经对操作系统的类型进行判断,同时也对DISTRO进行了赋值. 部分代码,如图: 显然文件里的KERNEL_NAME的值就是判断完成的操作系统,具体分析该值 ...
- Day23_IO第五天
1.递归求5的阶乘 package com.heima.chario; public class Demo8_Digui { /** * @param args * 递归:方法自己调用自己 * 5! ...
- Some thing about Graph
Learning CNNs for Arbitrary Graphs (Graph-like data): Learning Convolutional Neural Networks for Gra ...
- 解决Cannot delete or update a parent row: a foreign key constraint fails (`current_source_products`.`product_storage`, CONSTRAINT `product_storage_ibfk_3` FOREIGN KEY (`InOperatorID`)
出现这个异常的原因是因为设置了外键,造成无法更新或删除数据. 1.通过设置FOREIGN_KEY_CHECKS变量来避免这种情况 删除前设置 SET FOREIGN_KEY_CHECKS=0; 删除完 ...
- 随机生成UUID(GUID)的方法
- (NSString *)UUID { CFUUIDRef uuid_ref = CFUUIDCreate(NULL); CFStringRef uuid_string_ref= CFUUIDCre ...
- li标签的点击范围
<div class="login_menu_choose"> <ul class="cursor"> & ...
- TOJ1334
1334: Oil Deposits 时间限制(普通/Java):1000 ...
- java的VO和PO的用途
最近在搞一个项目,用到了 springMVC,加深了我对VO和PO的理解,有感而发. 1 写在之前的提示 VO == Value Object PO == Persistant Object VO对应 ...