Golang でシェルスクリプトファイルを実行する

ファイル構成

bin/
  ├ config
  └ test

main.go

権限変更

シェルファイルは実行権限がないと実行できないので、
変更しておく。

# 744, 754, 755 のどれか
$ chmod 744 bin/config
$ chmod 744 bin/test

サンプルコード

config

#!/bin/sh

USER="test_user"
PASSWORD="test_password"

test

#!/bin/sh

cd `dirname $0`
d=`pwd`

source $d/config

echo "user: '"$USER"', password: '"$PASSWORD"'"

main.go

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// supervisor などで起動した時は相対パスではなく絶対パスで指定する
	// output, err := exec.Command("./bin/test").Output()
	output, err := exec.Command("/path/to/your/project/bin/test").Output()
	if err != nil {
		fmt.Print(err.Error())
	}
	fmt.Print(string(output))
}
$ go run main.go
# user: 'test_user', password: 'test_password'
カテゴリー:Gosh