首页 > 其他 > 详细

3.shell程序的结构

时间:2014-03-05 09:02:03      阅读:492      评论:0      收藏:0      [点我收藏+]

Shell组成

[root@pankuo shell]# vim test.sh


#!/bin/bash

#用途:这是一个简单的shell示范程序

function show_name() {

      echo "今天是$1,你大大$2,来自$3"

}

name="$1"

ip="192.168.0.117"

today=`date +%F`


if [ $# != 1 ];then

      echo "Usage: . /$0 [使用者名称]"

      exit

fi


show_name "$today""$name" "$ip"


sleep 5

echo

echo "Bye-Bye"


[root@pankuo shell]# chmod +x test.sh

[root@pankuo shell]# bash test.sh

Usage: . /test.sh [使用者名称]

[root@pankuo shell]# bash test.sh pan

今天是2014-03-04,你大大pan,来自192.168.0.117


Bye-Bye



解释:定义函数show_name

定义变量name iptoday

调用函数

         Sleep 暂停5

执行bash shell的方法

#./test.sh 或者  source /root/shell/test.sh



#pwd

/root/shell

#/root/shell/test.sh


#sh test.sh


Bash shell 排错方法

#bash –v test.sh jack



检查程序行

#bash –n test.sh


追踪脚本的执行


#bash –x test.sh

强制变量一定要经过声明才能使用

Shopt –s –o nounset  


Bash shell执行的原理

登录主机后我们所处的已经是一个bash shell 这个shell 叫做loginshell  是我们以后执行脚本的父shell



[root@pankuo shell]# vim cd.sh


#!/bin/bash

cd /var/log

touch cd.txt


[root@pankuo shell]# chmod +x cd.sh

[root@pankuo shell]# ./cd.sh

[root@pankuo shell]# cat /var/log/cd.txt

[root@pankuo shell]#


你会发现执行完我们还在当前的目录

[root@pankuo shell]#  . cd.sh

[root@pankuo log]#


会发现这样操作就到了刚才脚本里的目录

.source    会让脚本只在父shell 环境执行


shell在开启子shell


[root@pankuo shell]# echo $SHLVL

1

[root@pankuo shell]# bash

[root@pankuo shell]# echo $SHLVL

2

[root@pankuo shell]# bash

[root@pankuo shell]# echo $SHLVL

3

[root@pankuo shell]#


每执行一次就进入下一层shell


Bash shell的启动配置文件

Bash5种运行模式

分别是互动模式,非互动模式,以sh名称调用,posix模式和限制功能模式



登录

登录主机时,login shell  先执行/etc/profile,接着bash检查用户的主目录中是否有.bash_profile,或者是否有.bash_login,或者是否有.profile ,若有则会读取并执行其中的一个文件执行顺序

.bash_profile    .bash_login .profile

注销

.bash_logout

执行新shell

1.执行交互式的shell:例如直接执行bash 产生一个子shell 此时 bash会读取并执行/etc/bash.bashrc,以及主目录中的.bashrc

2.执行shell脚本:例如执行脚本 test.sh 它会检查BASH_ENV  它会去看指向的文件


执行bash –r或以rbash的名称调用

rbash其实只是一个指向bashsoft link 执行rbash bash –r称为受限模式

例如:不能使用cd指令,不能设定或取消环境变量,使用的命令名称中不可以含有/字符,内置命令参数不能使用含有/的文件等









本文出自 “linux_oracle” 博客,请务必保留此出处http://pankuo.blog.51cto.com/8651697/1367494

3.shell程序的结构,布布扣,bubuko.com

3.shell程序的结构

原文:http://pankuo.blog.51cto.com/8651697/1367494

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!