Shell学习笔记(3)-一个复杂一点的Shell程序
2012-11-01 11:22
295 查看
程序示例:
hello.sh
执行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
hello.sh
#! /bin/bash # #用途:这是一个简单的shell示范程序 # # function show_name(){ echo "今个儿是$1,你$2大大,来自$3" } name="$1" ip="163.26.197.1" today=`date +%F` if [ $# != 1 ]; then echo "Usage: $0 [使用者名称]" exit fi show_name "$today" "$name" "$ip" sleep 5 echo echo "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学习笔记(2) 一个简单的shell脚本程序
- 学习 UNIX网络编程卷1:套接字 笔记1-实现一个简单的回射客户服务器程序
- 整理一下当年的学习笔记之:初步学习freemarker ,先做一个简单的HelloWord程序!
- 一个复杂标准程序report:RFEBKA00的学习
- ACE学习笔记 ----- 一个简单的网页链接提取程序
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
- Servlet学习笔记_03_使用servlet编写一个简单的helloworld程序
- Unity学习笔记(3)-----制作一个仿真星系(复杂版)【Step2】
- 操作系统学习笔记(40)--Shell程序
- 如何用python制作一个锻炼计算能力的exe小程序-学习笔记11-pyinstaller
- 学习笔记:一个Qt小程序,在开发板上运行成功
- 孙鑫VC学习笔记:第十五讲 编写一个基于MFC对话框的聊天程序
- duilib学习笔记01:一个简单的Duilib程序的基本框架
- java学习笔记---第一个applet程序以及一个小问题的解决
- shell脚本学习笔记--一个简单的脚本
- linux0.11学习笔记-技术铺垫-简单AB任务切换程序(1)-实现一个简单的bootloader
- 一个 Android程序员的小程序入门学习笔记『三』(自定义属性和获取属性)
- Hadoop学习笔记之如何运行一个MapReduce程序
- 【Rebol 学习笔记】第一篇:编写一个简单的 CGI 程序
- Jsp&Servelet 学习笔记-写出一个 servelet 程序