Shell学习笔记(3)-一个复杂一点的Shell程序
来源:互联网 发布:淘宝p图用什么软件好 编辑:程序博客网 时间:2024/05/16 17:41
程序示例:
hello.sh
#! /bin/bash##用途:这是一个简单的shell示范程序##function show_name(){echo "今个儿是$1,你$2大大,来自$3"}name="$1"ip="163.26.197.1"today=`date +%F`if [ $# != 1 ]; thenecho "Usage: $0 [使用者名称]"exitfishow_name "$today" "$name" "$ip"sleep 5echoecho "Bye-Bye ;-)"
#! /bin/bash指明了运行这个script脚本所使用的shell。在我们登录系统后,我们已经身处在一个login shell中,称为父Shell(可以在/etc/passwd中看login shell的类型).当我们执行某一个Shell Script时,父Shell会根据Script程序的第一行#!之后指定的Shell程序开启(此操作称为fork)一个子Shell的环境,然后在子Shell中执行此Shell Script。一旦子Shell中的Script执行完毕,此子Shell随即结束,仍然回到父Shell中,不会影响父Shell原本的环境。子Shell和父Shell一样,会开户3个文件:标准输入(键盘)、标准输出(屏幕)、标准错误(屏幕),同时,子Shell会继承父Shell的若干变量值的内容,这些变量称为环境变量。
执行Shell的方法:
1.进入到当前目录,执行
./hello.sh
直接执行hello.sh可能不行,因为当前目录可能没有放入path环境变量中
2.以绝对路径的方式,执行Script(假设当前目录为/root/tmp,下同)
/root/tmp/hello.sh
3.进入文件所在目录,执行Bash或sh命令
cd /root/tmp
Bash hello.sh或sh hello.sh
这种方式可以不指定script的执行权,即不需#! /bin/bash来指明执行script的shell类型
4.在现行的shell中执行
. /root/tmp/hello.sh
或者source /root/tmp/hello.sh
注意中间有个空格.
使用.或source会让Script只在父Shell的环境中执行,否则shell script会在新生成的子Shell中执行。
跟踪hello.sh的执行情况,可使用如下命令
/bin/bash -x /root/tmp/hello.sh Jack
执行记录如下:
+ name=Jack
+ ip=163.26.197.1
++ date +%F
+ today=2012-11-01
+ '[' 1 '!=' 1 ']'
+ show_name 2012-11-01 Jack 163.26.197.1
+ echo $'\275\361\270\366\266\371\312\3072012-11-01\243\254\304\343Jack\264\363\264\363\243\254\300\264\327\324163.26.197.1'
今个儿是2012-11-01,你Jack大大,来自163.26.197.1
+ slep 5
- Shell学习笔记(3)-一个复杂一点的Shell程序
- shell学习笔记(2) 一个简单的shell脚本程序
- Shell 一点笔记
- 一个简单的shell程序
- shell 学习笔记3
- SHELL学习笔记3
- Linux Shell学习笔记3:更多的bash shell命令
- Shell脚本学习初段--一个进度条程序
- shell脚本学习笔记--一个简单的脚本
- Linux Shell 学习笔记1:Shell程序的运行及基本介绍
- 操作系统学习笔记(40)--Shell程序
- 《学习bash》笔记--调试shell程序
- Shell 的语法学习笔记
- shell的一些学习笔记
- 关于shell的学习笔记
- Shell学习笔记(16)-最后一个练习
- shell shell学习笔记001--什么是shell?
- [Bash Shell] Shell学习笔记
- WinForm 应用程序的打包和部署_简单版(图文)
- 寻找数组中的最大值和最小值
- 打开新页面,返回前一页
- Spring MVC 派发
- shell 实练(2)-du/awk/stat/行读取
- Shell学习笔记(3)-一个复杂一点的Shell程序
- 落笔成伤,有谁的心不曾温柔过:伤感日志
- 操作js节点
- vim使用技巧
- 再学struts2
- stringbuilder 和 s+=的效率比较,以及by val 和by ref 的效率比较
- 锁模式
- 扩展的C++, Java
- Android 联系人分章节显示以及ListView快速滑动显示联系人首字母