골란에서 스크립트 (.sh) 파일을 실행하는 방법을 알아 내려고하고 있습니다. 명령 (예 : os/exec)을 실행하는 몇 가지 쉬운 방법을 찾았지만 전체 sh 파일 (파일이 변수 등을 설정 함)을 실행하는 방법을 찾고 있습니다.골란에서 배쉬 스크립트 실행
표준 os/exec 메서드를 사용하는 것은 간단하지 않습니다. "./script.sh"를 입력하고 스크립트의 내용을 문자열로로드하는 것이 exec 함수의 인수로 작동하지 않습니다. . 이동 프로그램에서
OIFS=$IFS;
IFS=",";
# fill in your details here
dbname=testDB
host=localhost:27017
collection=testCollection
exportTo=../csv/
# get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
keys=`mongo "$host/$dbname" --eval "rs.slaveOk();var keys = []; for(var key in db.$collection.find().sort({_id: -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
# now use mongoexport with the set of keys to export the collection to csv
mongoexport --host $host -d $dbname -c $collection --fields "$keys" --csv --out $exportTo$dbname.$collection.csv;
IFS=$OIFS;
:
out, err := exec.Command(mongoToCsvSH).Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("output is %s\n", out)
하는 mongoToCsvSH이 (가) 쉬 경로 또는 될 수 있습니다
예를 들어이 내가 이동에서 실행하려는 쉬 파일입니다 실제 내용 - 둘 다 작동하지 않습니다.
아이디어를 얻으려면 어떻게해야합니까?
감사합니다. 이게 효과가있는 것처럼 보입니다. 그러나 이제는 다른 문제가 있습니다 - 스크립트를 실행하는 데 약 1 분이 걸리지 만 프로그램은 실행을 마칠 때까지 기다리지 않습니다. 실행은 실제로 아직 작성되지 않은 상태에서 계속됩니다. 어떤 아이디어입니까? – orcaman
@orcaman 어떻게 운영하고 있습니까? 'exec.Command ("/ bin/sh", mongoToCsvSH) .Output()'? – OneOfOne
예. 문제는 다음 shine을 계속하기 전에이 sh가 파일을 보내기를 기다려야한다는 것입니다. – orcaman