zoukankan      html  css  js  c++  java
  • Shell脚本的三种执行方式

    Shell脚本的执行方式可以有以下几种:

    方式一: 

    ./script.sh     # 利用小数点来执行

    方式二: 

    sh script.sh 或 bash script.sh      #  利用bash(sh)来执行脚本

    前面两种方式其实都是一样的:都是在当前父进程下的子进程中执行,子进程完成后,子进程中的各项变量或操作将会结束而不会传回到父进程中.举例来说:

    可以看到,执行后再看脚本中两个变量,在父进程中不起作用!

    备注: 如果在script2.sh文件里面执行script1.sh的脚本,那么就是执行.  ./script1.sh   [中间有空格]

    方式三: 

     source script.sh  或 . liqiang.sh#  利用小数点来执行

    而通过第三种方式执行(source test.sh)的话,在父进程中就起作用了:

     

    这就是直接执行与用source命令执行的区别,前者只作用于子进程本身,后者则作用于整个父进程。

    因此:如要想不注销系统,并让全局配置文件生效,则必须用source命令:

    比如说: 在全局配置文件中/etc/profile添加了JAVA_HOME,要让他对整个环境生效

    export JAVA_HOME=/usr/java/jdk1.7.0_75

    就必须执行source /etc/profile

    注意:在执行时要赋权限

    chmod a+x liqiang.sh #赋权限chmod a+x script-name

    补充知识点:

    一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:

    #!/bin/bash

    #!/bin/sh

    注意:

    (1)在Shell中如果一行的第一个字母是#,则是注释,但是上面两个是写在第一行,所以不是脚本注释行,如果写在某个命令之后,则变成注释行。

    (2)sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。

  • 相关阅读:
    SQLLoader7(只导入数据文件的其中几行记录)
    SQLLoader6(一个或多个数据文件按条件导入不同的表)
    SQLLoader5(从多个数据文件导入到同一张表)
    SQLLoader4(数据文件中的列与表中列不一致情况-filler)
    SQLLoader3(数据文件没有分隔符时的导入)
    SQLLoader2(导入EXCEL或csv格式的文件)
    SQLLoader1(简单测试,以控制文件方式导入数据)
    可编程内存
    JSONP
    SSL协议
  • 原文地址:https://www.cnblogs.com/insane-Mr-Li/p/9094925.html
Copyright © 2011-2022 走看看