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 ...
随机推荐
- Java中长度为0的数组与null的区别
有如下两个变量定义,这两种定义有什么区别呢? 1. int[] zero = new int[0]; 2. int[] nil = null; zero是一个长度为0的数组,我们称之为“空数组”,空数 ...
- RaphaelJS实践--猫和老鼠矢量图展示
(目前发现一些文章被盗用的情况,我们将在每篇文章前面添加原文地址,本文源地址:http://www.cnblogs.com/idealer3d/p/tomAndJerryRaphaelVectorGr ...
- 1password密码库格式更新
由于国内网络安全做的太差,经常发生被脱裤的事件,比如最近的网易邮箱(via 乌云),所以只好用1password这类密码管理软件,实现一站一密.昨晚半夜冻醒了,刷推刷到了这个:1password-le ...
- 关于struts和Spring 结合到一起之后存在ACtion创建单实例还是多
struts 2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象.原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面 ...
- 错误集:js解析jQuery.post返回的xml之Could not find action or result
js里用jQuery.post去后台查询数据,返回的是xml格式的数据流. js代码: var params = ""; params = encodeURI(params); v ...
- Surprise团队第三周项目总结
Surprise团队第二周项目总结 项目进展 这周我们小组的项目在上周的基础上进行了补充,主要注重在注册登录界面的实现,以及关于数据库的一些学习. 在设计注册登录界面时,每一块的地方控件都不一样,比如 ...
- java播放背景音乐的几种方式
大四第一学期快结束了,准备找实习单位的时候,用了一周的时间去投简历去面试,结果没有一家有反馈要不就是面试没通过,拿着iOS的项目(在老师工作室的外包项目)去面试java开发,结果全部碰壁. 第一种,直 ...
- Opencv-Python 学习
加载一个灰度图,显示图片,按下’s’键保存后退出,或者按下 ESC 键退出不保存. import numpy as np import cv2 img = cv2.imread('linux.png' ...
- CSS code
body{ background-color: #1b1919; background-image: url(); } #blog_nav_rss, #blog_nav_rss_image{ disp ...
- iOS_Swift初识之使用三种回调方式自定义Button
最近在学习Swift ,发现青玉伏案大神早期用OC写的一篇博客--IOS开发之自定义Button(集成三种回调模式) 很适合用来熟悉Swift的回调方式,于是我就用Swift翻版了一下,具体实现原理 ...