执行Shell脚本的4种方法及区别介绍

 更新时间:2015年05月27日 12:12:26   投稿:junjie  
这篇文章主要介绍了执行Shell脚本的4种方法及区别介绍,本文讲解了相对路径方式、绝对路径方式、bash命令调用、相对或绝对方式以及说下几种方式的区别,需要的朋友可以参考下

执行shell脚本有以下几种方式

1、相对路径方式,需先cd到脚本路径下

复制代码 代码如下:

[root@banking tmp]# cd /tmp 
[root@banking tmp]# ./ceshi.sh

脚本执行成功 

2、绝对路径方式

复制代码 代码如下:

[root@banking tmp]# /tmp/ceshi.sh  

脚本执行成功 

3、bash命令调用

复制代码 代码如下:

[root@banking /]# bash /tmp/ceshi.sh

脚本执行成功 

4、. (空格)  相对或绝对方式

复制代码 代码如下:

[root@banking /]# . /tmp/ceshi.sh  

说下几种方式的区别

第一种和第二种没有什么区别,两种方式都需要提前赋予脚本以执行权限。

第三种是把脚本当做bash的调用来处理,所以,脚本不需要有执行权限就可以执行。

前三种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。

第四种是使脚本内容在当前shell里执行,而不是单独开子shell执行。

开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,不做特殊通道处理的话,父shell是不可见的。

而在当前shell中执行的话,则所有设置的环境变量都是直接生效可用的。

验证:

复制代码 代码如下:

[root@banking /]# cat /tmp/ceshi.sh  
top 

1、前三种执行方式下的pstree显示

复制代码 代码如下:

├─sshd─┬─sshd───bash───bash───top 
│      └─sshd───bash───pstree 

2、第四种执行方式下的pstree显示

复制代码 代码如下:

├─sshd─┬─sshd───bash───top 
│      └─sshd───bash───pstree 

3、验证环境变量设置的继承关系及可见关系
建立两个脚本,father.sh和subshell.sh。其中father.sh调用subshell.sh

复制代码 代码如下:

[root@banking /]# cat /tmp/father.sh
v_ceshi='father'
#-------父shell中定义变量
echo "以子shell方式调用脚本"
/tmp/subshell.sh
echo "输出v_ceshi值为${v_ceshi}"
echo ""
echo "在当前shell中执行脚本"
. /tmp/subshell.sh
echo "输出v_ceshi值为${v_ceshi}"
[root@banking /]#
[root@banking /]# cat /tmp/subshell.sh
v_ceshi=son
[root@banking /]#

执行结果为

复制代码 代码如下:

[root@banking /]# /tmp/father.sh
以子shell方式调用脚本
输出v_ceshi值为father

在当前shell中执行脚本
输出v_ceshi值为son

相关文章

  • 详解Linux中的wget命令

    详解Linux中的wget命令

    Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。下面通过本文给大家介绍Linux中的wget命令,一起看看吧
    2017-09-09
  • linux定时器crontab的使用教程

    linux定时器crontab的使用教程

    这篇文章主要介绍了linux定时器crontab的使用教程,需要的朋友可以参考下
    2018-08-08
  • 收集的48个Shell脚本小技巧

    收集的48个Shell脚本小技巧

    这篇文章主要介绍了收集的48个Shell脚本小技巧,涵盖方方面面,比如获取CPU信息、VI技巧、正则表达式等等,需要的朋友可以参考下
    2014-08-08
  • Shell中使用exec命令的方法和用途

    Shell中使用exec命令的方法和用途

    本文主要介绍了Shell中使用exec命令的方法和用途,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Window11 WSL2 添加静态IP的脚本

    Window11 WSL2 添加静态IP的脚本

    这篇文章主要介绍了Window11 WSL2 添加静态IP的脚本方法,通过一段脚本给 Windows 端的"vEthernet (WSL)"加了IPv4 172.18.16.1,给 Linux 端的 eth0 添加 IPv4 172.18.16.1,在使用前,请按需调整网络接口的名称和IP地址,需要的朋友可以参考下
    2023-01-01
  • 给定链表中间节点指针,删除中间节点的方法

    给定链表中间节点指针,删除中间节点的方法

    本文实现算法来删除单链表中的中间节点,只知道指向该节点中间节点的指针,大家可以参考使用
    2013-11-11
  • Shell脚本定时备份清除运行系统日志的代码

    Shell脚本定时备份清除运行系统日志的代码

    写备份并清除老日志Shell脚本,并附带一个清除日志(log)的shell脚本代码,需要的朋友可以参考下
    2013-02-02
  • Shell脚本实现的一个简易Web服务器例子分享

    Shell脚本实现的一个简易Web服务器例子分享

    这篇文章主要介绍了Shell脚本实现的一个简易Web服务器例子分享,本文实现的Web服务器非常简单实用,可以在你不想安装nginx、apache等大型WEB服务器时使用,需要的朋友可以参考下
    2014-12-12
  • 25个好用的Shell脚本常用命令分享

    25个好用的Shell脚本常用命令分享

    这篇文章主要介绍了25个好用的Shell脚本常用命令,由个人收集整理而来,需要的朋友可以参考下
    2014-03-03
  • shell脚本编程之循环语句学习笔记

    shell脚本编程之循环语句学习笔记

    这篇文章主要介绍了shell脚本编程之循环语句学习笔记,本文内容较简单,可以作为shell循环语句的备忘录,忘记怎么写时来看看吧~需要的朋友可以参考下
    2014-09-09

最新评论