shell脚本4种执行方式

 更新时间:2019-06-25 04:00:55   作者:佚名   我要评论(0)

Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。
首先,看下我们的脚本内容


[tan@tan scripts]$ ll
tot

Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。

首先,看下我们的脚本内容

[tan@tan scripts]$ ll
total 4
-rw-rw-r--. 1 tan tan 68 May 8 23:18 test.sh
[tan@tan scripts]$ cat test.sh 
#!/usr/bin/bash

/usr/bin/python <<-EOF
print "Hello Shell"
    EOF

1、工作目录执行

工作目录执行,指的是执行脚本时,先进入到脚本所在的目录(此时,称为工作目录),然后使用 ./脚本方式执行

[tan@tan scripts]$ ./test.sh
-bash: ./test.sh: Permission denied
[tan@tan scripts]$ chmod 764 test.sh
[tan@tan scripts]$ ./test.sh
Hello Shell

如图,报了权限错误,上一篇博文有提到,这里需要赋权,使用chmod 764 test.sh 赋权后就可以正常执行了

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录 (/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

2、绝对路径执行

绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径

[tan@tan scripts]$ pwd
/home/tan/scripts
[tan@tan scripts]$ `pwd`/test.sh 
Hello Shell
[tan@tan scripts]$ /home/tan/scripts/test.sh 
Hello Shell

这里 `pwd` 指的是该命令执行结果,等同于 /home/tan/scripts

3、sh执行

sh执行,指的是用脚本对应的sh或bash来接着脚本执行

[tan@tan scripts]$ sh test.sh 
Hello Shell
[tan@tan scripts]$ bash test.sh 
Hello Shell

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三 是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用 指定bash路径自然也好理解了啊,呵呵……。

4、shell环境执行

shell环境执行,指的是在当前的shell环境中执行,可以使用 . 接脚本 或 source 接脚本

[tan@tan scripts]$ . test.sh 
Hello Shell
[tan@tan scripts]$ source test.sh 
Hello Shell

总结

以上所述是小编给大家介绍的shell脚本4种执行方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

您可能感兴趣的文章:

  • Linux shell脚本的建立与执行
  • hbase-shell批量命令执行脚本的方法
  • Spark-shell批量命令执行脚本的方法
  • 使用shell脚本执行hive、sqoop命令的方法
  • hive-shell批量命令执行脚本的实现方法
  • shell在指定目录下批量执行sql脚本的实例
  • 在linux shell脚本中root切换到普通用户执行脚本或命令的方法
  • 通过shell脚本循环进入目录执行命令的方法
  • 详解shell中source、sh、bash、./执行脚本的区别
  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • shell脚本实现同时多台远程主机执行命令的代码分享

相关文章

  • shell脚本4种执行方式

    shell脚本4种执行方式

    Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。 首先,看下我们的脚本内容 [tan@tan scripts]$ ll tot
    2019-06-25
  • pandas.read_csv参数详解(小结)

    pandas.read_csv参数详解(小结)

    pandas.read_csv参数整理 读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://pandas.pydata.org/pandas-docs/stabl
    2019-06-25
  • Pandas库之DataFrame使用的学习笔记

    Pandas库之DataFrame使用的学习笔记

    1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然
    2019-06-25
  • 树莓派采用socket方式文件传输(python)

    树莓派采用socket方式文件传输(python)

    两个树莓派,在同一个局域网内,传输文件,采用socket方式。 client端代码: import socket import os import hashlib client = socket.socket() # 生成
    2019-06-25
  • 如何在JavaScript中谨慎使用代码注释

    如何在JavaScript中谨慎使用代码注释

    前言 最令程序员头痛的事情莫过于阅读别人的代码,但其实时间一久阅读自己的代码也会很痛苦。 问题不是出在『自己或别人』,而是在代码本身。 必要的注释可以
    2019-06-25
  • Golang 使用接口实现泛型的方法示例

    Golang 使用接口实现泛型的方法示例

    在C/C++中我们可以使用泛型的方法使代码得以重复使用,最常见例如stl functions:vector<int> vint or vector<float> vfloat等。这篇文章将使用interface{...
    2019-06-25
  • Go 值传递与引用传递的方法

    Go 值传递与引用传递的方法

    问题引入 什么时候选择 T 作为参数类型,什么时候选择 *T 作为参数类型? [ ] T 是传递的指针还是值?选择 [ ] T 还是 [ ] *T &#63; 哪些类型复制和传
    2019-06-25
  • Golang 函数执行时间统计装饰器的一个实现详解

    Golang 函数执行时间统计装饰器的一个实现详解

    背景 最近在搭一个新项目的架子,在生产环境中,为了能实时的监控程序的运行状态,少不了逻辑执行时间长度的统计。时间统计这个功能实现的期望有下面几点:
    2019-06-25
  • go module使用本地包的方法示例

    go module使用本地包的方法示例

    go module的使用非常简单 初始化go.mod go mod init 整理依赖包 go mod tidy 如果想缓存到vendor目录 go mod vendor 执行命令之后都会自动把依赖搞
    2019-06-25
  • Go JSON编码与解码的实现

    Go JSON编码与解码的实现

    在开发应用程序时,客户端(前端页面或APP)与服务端交互是在所难免的,在交互过程传递数据时,最通用和流行格式便是JSON,Go语言提供了encoding/json包,用于处
    2019-06-25

最新评论