2018-04-24 shell脚本

shell脚本利用shell功能写的纯文本文件,将shell语法和命令写在里面,搭配正则表达式、管道命令与数据流重定向等。不需要编译既可执行。最简单的功能就是整合一些连续命令,将它写入script中,用script执行一连串的命令输入。但是shell script用的是外部命令和一些bash shell的一些默认工具,调用外部函数库,所以速度慢,占用cpu较多。
shell脚本中的path只是临时的环境变量,只作用于脚本执行的过程中。具体定义:
PATH=/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin 定义临时变量
export PATH 将临时变量转换为临时环境变量

shell script执行方式区别
1、直接命令执行的方式
直接命令执行或者用bash或sh执行脚本,其实script是在子进程内执行,当子进程完成后,子进程的变量和操作不会传回父进程。 sh sh02.sh
2、用source 执行脚本,在父进程中执行 source sh02.sh

利用test命令检测系统上某些文件或者相关的属性
文件属性操作
test命令可以判断文件是否存在,以及侦测各种的文件属性。
test -e filenanme
命令参数 含义
-b file file存在,并且为块特殊文件,则为真
-c file file存在,并且为字符特殊文件,则为真
-d file file存在,并且为目录,则为真
-e file file存在,则为真
-f file file存在,并且为常规文件,则为真
-g file file存在,并且设置了文件的 SGID 位,则为真
-G file file存在,并且为组所有,则为真
-r file file存在,并且有读权限,则为真
-s file file存在,并且长度大于0,则为真
-w file file存在,并且有写权限,则为真
-x file file存在,并且有执行权限,则为真
算术比较运算
在shell中,test命令可以比较两个数字的大小,相等等。

操作符 含义
num1 -eq num2 两个数字相等,则为真
num1 -ge num2 num1大于等于num2,则为真
num1 -gt num2 num1大于num2,则为真
num1 -le num2 num1小于等于num2,则为真
num1 -lt num2 num1小于num2,则为真
num1 -ne num2 num1不等于num2,则为真
逻辑运算
test可以进行基本的逻辑运算

表达式 含义
test EXPRESSION EXPRESSION表达式为真,则结果为真
test ! EXPRESSION EXPRESSION表达式为假,则结果为真
test EXPRESSION1 -a EXPRESSION2 逻辑与,EXPRESSION1与EXPRESSION2都为真,结果为真
test EXPRESSION1 -o EXPRESSION2 逻辑或,EXPRESSION1与EXPRESSION2有一个为真,结果为真
判断字符串

test –n 字符串 #字符串的长度非零
test –z 字符串 #字符串的长度是否为零
test 字符串1=字符串2 #字符串是否相等,若相等返回true
test 字符串1!=字符串2 #字符串是否不等,若不等反悔false

默认参数
$# 代表后街的参数个数
$@ 代表参数进行罗列,$1 $2 $3这样
$* 类似$@
用shift对参数进行偏移
shift 3#
支持if then fi 条件判断语句
if []&&[]||[]; then
echo "OK"
exit 0
fi 结束标志

if []; then
echo "OK"
else
XXXXXXX
fi 结束标志

if []; then
echo "OK"
elif []; then
echo "elif"
else
echo "esle"
fi 结束标志

支持case 参数 in
“XXX” )
echo "do what you want"
;;
esac 结束符

while [condition]
do
程序体
done 结束符

until [conditon]
do
程序体
done

for 固定形式
for var in 固定值1 固定值2 固定值3
do
程序体
done

for ((s初始值;限制值;执行步长))
do
程序体
done

shell script追踪和调试
sh [var] shellname.sh
var=
-n 不执行,仅查语法错误
-v 执行前,将script内容打印出来
-x 将执行过程全部显示出来 墙裂建议用这个进行错误调试

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,381评论 0 5
  • Bash内置基本变量 PWD : 显示当前的工作目录 OLDPWD : 显示上一次的工作目录 ~:用户家目录 - ...
    魏镇坪阅读 1,525评论 0 6
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 3,150评论 3 49
  • 0.linux启动的步骤 设备加电----》BIOS自检-----》grub引导启动-----》加载内核----》...
    萌面大叔2阅读 779评论 0 1
  • 第1章 小试牛刀 $ 是普通用户,# 表示管理员用户 root。 shebang:#!。sharp / hash ...
    巴喬書摘阅读 6,339评论 1 4