同じシェルgolangで複数のExecコマンドを実行する

reticentroot:

os / execパッケージを使用して複数のコマンドを実行する方法を理解できません。私はネットとスタックオーバーフローを調べましたが、私の場合に役立つものは何も見つかりませんでした。これが私のソースです:

package main

import (
    _ "bufio"
    _ "bytes"
    _ "errors"
    "fmt"
    "log"
    "os"
    "os/exec"
    "path/filepath"
)

func main() {
    ffmpegFolderName := "ffmpeg-2.8.4"
    path, err := filepath.Abs("")
    if err != nil {
        fmt.Println("Error locating absulte file paths")
        os.Exit(1)
    }

    folderPath := filepath.Join(path, ffmpegFolderName)

    _, err2 := folderExists(folderPath)
    if err2 != nil {
        fmt.Println("The folder: %s either does not exist or is not in the same directory as make.go", folderPath)
        os.Exit(1)
    }
    cd := exec.Command("cd", folderPath)
    config := exec.Command("./configure", "--disable-yasm")
    build := exec.Command("make")

    cd_err := cd.Start()
    if cd_err != nil {
        log.Fatal(cd_err)
    }
    log.Printf("Waiting for command to finish...")
    cd_err = cd.Wait()
    log.Printf("Command finished with error: %v", cd_err)

    start_err := config.Start()
    if start_err != nil {
        log.Fatal(start_err)
    }
    log.Printf("Waiting for command to finish...")
    start_err = config.Wait()
    log.Printf("Command finished with error: %v", start_err)

    build_err := build.Start()
    if build_err != nil {
        log.Fatal(build_err)
    }
    log.Printf("Waiting for command to finish...")
    build_err = build.Wait()
    log.Printf("Command finished with error: %v", build_err)

}

func folderExists(path string) (bool, error) {
    _, err := os.Stat(path)
    if err == nil {
        return true, nil
    }
    if os.IsNotExist(err) {
        return false, nil
    }
    return true, err
}

端末から行うようにコマンドを実行します。cd path; ./configure; makeしたがって、各コマンドを順番に実行し、最後のコマンドが完了するのを待ってから次に進む必要があります。現在のバージョンのコードで./configure: no such file or directoryは、前のコマンドと同じディレクトリにあるのではなく、cd pathが実行され、新しいシェルで./configureが実行されるため私は推測しています。何か案は?更新作業ディレクトリを変更してから./configureおよびmakeコマンドを実行することで問題を解決しました

err = os.Chdir(folderPath)
    if err != nil {
        fmt.Println("File Path Could not be changed")
        os.Exit(1)
    }

それでも、同じシェルでコマンドを実行する方法があるかどうか知りたいです。

James Henstridge:

単一のシェルインスタンス内で複数のコマンドを実行する場合は、次のようにしてシェルを呼び出す必要があります。

cmd := exec.Command("/bin/sh", "-c", "command1; command2; command3; ...")
err := cmd.Run()

これにより、シェルは指定されたコマンドを解釈します。また、のようなシェル組み込みを実行することもできますcdこれは、ユーザーデータを安全な方法でこれらのコマンドに置き換えるのは簡単ではないことに注意してください。

代わりに、特定のディレクトリでコマンドを実行するだけの場合は、シェルなしで実行できます。現在の作業ディレクトリを設定して、次のようにコマンドを実行できます。

config := exec.Command("./configure", "--disable-yasm")
config.Dir = folderPath
build := exec.Command("make")
build.Dir = folderPath

...前と同じように続けます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

単純なsshで同じシェルを使用して複数のコマンドを実行する

分類Dev

同じLinuxコマンドを複数のタブ/シェルで同時に実行するにはどうすればよいですか?

分類Dev

同じ端末で複数のコマンドを同時に実行する

分類Dev

シェルで1行に複数のコマンドを実行する

分類Dev

複数のアクティブなシェルで同時にコマンドを実行する

分類Dev

対話型シェルで複数のコマンドを実行する方法

分類Dev

同じファイルで複数のsedコマンドを同時に実行する

分類Dev

同じシェルウィンドウでの複数のコマンドの実行

分類Dev

1つのファイルで複数のシェルコマンドを実行し、出力を同じファイルにリダイレクトします

分類Dev

変数の割り当て後に同じ行でコマンドを実行することはシェルポータブルですか?

分類Dev

Pythonはシェルで複数行のコマンドを実行します

分類Dev

tsystemコンポーネントのtalendで複数のシェルコマンドを実行する方法

分類Dev

Python-複数のシェルコマンドを次々に実行する

分類Dev

複数のファイルに対して同時に同じコマンドを実行する

分類Dev

同じコマンドで複数のタスクを実行しますか?

分類Dev

DelphiのShellExecuteExを使用して、同じコマンドラインで複数のタスクを実行する

分類Dev

複数のマシンで同じPythonブロックを実行する方法

分類Dev

execを使用してC ++でシェルコマンドを実行する

分類Dev

Pythonシェルでbashの複雑なfindコマンドを実行する

分類Dev

複数のタブを開き、シェルスクリプトでコマンドを実行する

分類Dev

`find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

分類Dev

サブシェルを生成せずにbashで複数のコマンドを実行する

分類Dev

複数のマシンでgearmanWorkerPHPコードを実行する

分類Dev

新しいシェルで複数のコマンドをバッチ実行する

分類Dev

Pythonを使用して同じTCLシェルでコマンドを実行する方法

分類Dev

パイプを使用して同じプロセスで複数のシェルコマンドを実行する場合のデッドロックの読み取り

分類Dev

アプリと同じプロセスでシェルコマンドを実行する

分類Dev

パイプの後に複数の引数を指定して同じコマンドを複数回実行する

分類Dev

複数のコマンドを同時に実行する

Related 関連記事

  1. 1

    単純なsshで同じシェルを使用して複数のコマンドを実行する

  2. 2

    同じLinuxコマンドを複数のタブ/シェルで同時に実行するにはどうすればよいですか?

  3. 3

    同じ端末で複数のコマンドを同時に実行する

  4. 4

    シェルで1行に複数のコマンドを実行する

  5. 5

    複数のアクティブなシェルで同時にコマンドを実行する

  6. 6

    対話型シェルで複数のコマンドを実行する方法

  7. 7

    同じファイルで複数のsedコマンドを同時に実行する

  8. 8

    同じシェルウィンドウでの複数のコマンドの実行

  9. 9

    1つのファイルで複数のシェルコマンドを実行し、出力を同じファイルにリダイレクトします

  10. 10

    変数の割り当て後に同じ行でコマンドを実行することはシェルポータブルですか?

  11. 11

    Pythonはシェルで複数行のコマンドを実行します

  12. 12

    tsystemコンポーネントのtalendで複数のシェルコマンドを実行する方法

  13. 13

    Python-複数のシェルコマンドを次々に実行する

  14. 14

    複数のファイルに対して同時に同じコマンドを実行する

  15. 15

    同じコマンドで複数のタスクを実行しますか?

  16. 16

    DelphiのShellExecuteExを使用して、同じコマンドラインで複数のタスクを実行する

  17. 17

    複数のマシンで同じPythonブロックを実行する方法

  18. 18

    execを使用してC ++でシェルコマンドを実行する

  19. 19

    Pythonシェルでbashの複雑なfindコマンドを実行する

  20. 20

    複数のタブを開き、シェルスクリプトでコマンドを実行する

  21. 21

    `find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

  22. 22

    サブシェルを生成せずにbashで複数のコマンドを実行する

  23. 23

    複数のマシンでgearmanWorkerPHPコードを実行する

  24. 24

    新しいシェルで複数のコマンドをバッチ実行する

  25. 25

    Pythonを使用して同じTCLシェルでコマンドを実行する方法

  26. 26

    パイプを使用して同じプロセスで複数のシェルコマンドを実行する場合のデッドロックの読み取り

  27. 27

    アプリと同じプロセスでシェルコマンドを実行する

  28. 28

    パイプの後に複数の引数を指定して同じコマンドを複数回実行する

  29. 29

    複数のコマンドを同時に実行する

ホットタグ

アーカイブ