如何在Linux中创建一个同时执行多个任务的bash脚本

如何在Linux中创建一个同时执行多个任务的bash脚本,linux,bash,Linux,Bash,我想创建一个包含以下内容的bash脚本: I/O重定向 管道 符号链接 外卡 将用户添加到多个组 我知道如何执行命令来分别创建每个命令,但我不知道如何创建一个bash脚本来同时执行所有命令。有人能帮我吗?我将不胜感激 #/bin/bash cd /home mkdir testdir && cd testdir touch testfile.txt | ln -s /etc/passwd symboliclink &&

我想创建一个包含以下内容的bash脚本:

  • I/O重定向
  • 管道
  • 符号链接
  • 外卡
  • 将用户添加到多个组
  • 我知道如何执行命令来分别创建每个命令,但我不知道如何创建一个bash脚本来同时执行所有命令。有人能帮我吗?我将不胜感激

        #/bin/bash
    
        cd /home
    
        mkdir testdir &&
    
        cd testdir
    
        touch testfile.txt | ln -s /etc/passwd symboliclink && cd .. | mkdir things && cp -rf /testdir /things | usermod -aG admins,hr,payroll test
    

    将您想做的每件事放在函数中,然后对每件事的执行进行后台处理:

    do_redirection_stuff() {
        # your stuff here
    }
    
    do_wild_card_stuff() {
        # your stuff here
    }
    
    do_symbolic_link_stuff() {
        # kool stuff
    }
    
    do_parallel_tasks() {
        do_redirection_stuff &
        do_wild_card_stuff &
        do_symbolic_link_stuff &
    
        wait # For all of them to finish
    }
    
    do_parallel_tasks
    
    更新(代码已添加到OP的问题中)

    您似乎对如何使用shell重定向感到困惑。在您提供的代码中,您应该串行执行每个命令。类似地,这些命令都不可能阻塞很长时间,因此并行执行这些命令是过分的

    #!/bin/bash
    cd /home
    mkdir testdir
    cd testdir
    touch testfile.txt
    ln -s /etc/passwd symboliclink
    cd ..
    mkdir things
    cp -rf /testdir /things
    usermod -aG admins,hr,payroll test
    

    将您想做的每件事放在函数中,然后对每件事的执行进行后台处理:

    do_redirection_stuff() {
        # your stuff here
    }
    
    do_wild_card_stuff() {
        # your stuff here
    }
    
    do_symbolic_link_stuff() {
        # kool stuff
    }
    
    do_parallel_tasks() {
        do_redirection_stuff &
        do_wild_card_stuff &
        do_symbolic_link_stuff &
    
        wait # For all of them to finish
    }
    
    do_parallel_tasks
    
    更新(代码已添加到OP的问题中)

    您似乎对如何使用shell重定向感到困惑。在您提供的代码中,您应该串行执行每个命令。类似地,这些命令都不可能阻塞很长时间,因此并行执行这些命令是过分的

    #!/bin/bash
    cd /home
    mkdir testdir
    cd testdir
    touch testfile.txt
    ln -s /etc/passwd symboliclink
    cd ..
    mkdir things
    cp -rf /testdir /things
    usermod -aG admins,hr,payroll test
    

    昨天我学习了一个叫做并行的工具:


    它使并行运行任意数量的任务变得非常容易,并对其输出进行排序。花点时间浏览一下教程,时间会花得很好的

    我昨天学习了一个叫做
    parallel
    的工具:


    它使并行运行任意数量的任务变得非常容易,并对其输出进行排序。花点时间浏览一下教程,时间会花得很好的

    詹姆逊,谢谢你的例子。但是我仍然很难理解整个过程!有没有更简单的方法来完成这项任务?@shabam你应该发布到目前为止的代码,以便进行具体讨论。我已经在我的问题中补充了我到目前为止所做的工作。非常感谢您的帮助。在脚本末尾,我试图创建一个别名。所以,我所做的是:echo“alieastest='cd&&./myscript.sh'>>~/.bashrc.~/。bashrc它确实将该行添加到.bashrc中,但是看起来,~/。巴什,它不起作用了。你能帮忙吗。我不知道我做错了什么!詹姆逊,谢谢你的例子。但是我仍然很难理解整个过程!有没有更简单的方法来完成这项任务?@shabam你应该发布到目前为止的代码,以便进行具体讨论。我已经在我的问题中补充了我到目前为止所做的工作。非常感谢您的帮助。在脚本末尾,我试图创建一个别名。所以,我所做的是:echo“alieastest='cd&&./myscript.sh'>>~/.bashrc.~/。bashrc它确实将该行添加到.bashrc中,但是看起来,~/。巴什,它不起作用了。你能帮忙吗。我不知道我做错了什么!