zoukankan      html  css  js  c++  java
  • 在shell下执行命令的方法

    在shell下执行命令的方法

    1. #!/bin/sh

    语法:在shell.sh的开头写入

    #!/bin/sh
    一般的shell脚本就是这种用法。这种方法调用脚本开头的shell执行命令,子shell执行的时候, 父shell暂停运行,等待子shell运行完后返回父shell。子shell从父shell继承环境变量.但是子shell中的环境变量不会带回父 shell

    2. exec

    语法:

    exec 命令
    

    exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了(相当于父shell被子shell删除)

    3. source或者

    语法:

    source /xxx/shell.sh
    . /xxx/shell.sh
    

    (1)与fork的区别是不新开一个子shell来执行被调用的脚本,而是在同一个shell中执行。所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用。
    (2)与 exec 的区别在于这个命令开启的子shell不会将父shell吞噬,执行完这个子shell以后还可以继续执行父shell下面的指令

    4. ()
    语法:

    ( 语句;语句;语句;…… )
    

    圆括号中命令列表的命令将会运行在一个子shell中。

    比如:

    $ (cd ..;ls -l)
    

    cd ..命令改变的是子Shell的PWD,而不会影响到交互式Shell。
    然而命令

    $ cd ..;ls -l
    

    则有不同的效果,cd ..命令是直接在交互式Shell下执行的,改变交互式Shell的PWD,然这种方式相当于执行Shell脚本:

    5.{}
    语法:

    {语句;语句;……}
    

    不会启动子shell

  • 相关阅读:
    洛谷1509 找啊找啊找GF
    要怎样努力,才能成为很厉害的人?
    随笔
    2018NOIP模拟题 曲线
    洛谷4147 玉蟾宫
    洛谷2258 子矩阵
    Vijos 纸牌
    [leetcode] Word Break
    [leetcode] Maximum Binary Tree
    [leetcode] Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/devilyouwei/p/12306337.html
Copyright © 2011-2022 走看看