golang执行多个linux命令,在同一个shell golang中运行多个Exec命令

我无法确定如何使用os / exec包运行多个命令.我已经控制了网络和stackoverflow,并没有发现任何适用于我的情况.这是我的来源:

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路径; ./配置;使

所以我需要按顺序运行每个命令并等待最后一个命令完成后再继续.使用我当前版本的代码,它目前说的是./configure:没有这样的文件或目录我认为这是因为cd路径执行并且在新的shell ./configure中执行,而不是在上一个命令的同一目录中.有任何想法吗?

更新我通过更改工作目录然后执行./configure和make命令解决了这个问题

err = os.Chdir(folderPath)

if err != nil {

fmt.Println("File Path Could not be changed")

os.Exit(1)

}

现在我仍然很想知道是否有办法在同一个shell中执行命令.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值