يعيد Output وأساليب Command الأخرى قيمة *exec.Error إذا
حدثت مشكلة أثناء تنفيذ الأمر، مثل مسار خاطئ، ويعيد
*exec.ExitError إذا عمل الأمر لكنه خرج برمز إرجاع غير صفري.
أغفلنا فحوص الأخطاء في المثال أعلاه، لكن يمكنك استخدام النمط
المعتاد if err != nil معها كلها. كما أننا لا نجمع إلا نتائج
StdoutPipe، لكن يمكنك جمع StderrPipe بالطريقة نفسها تمامًا.
لاحظ أننا عند تشغيل الأوامر نحتاج إلى توفير الأمر ومصفوفة
الوسائط كلًا على حدة، بدلًا من تمرير سلسلة نصية واحدة لسطر
الأوامر. إذا أردت تشغيل أمر كامل من سلسلة نصية، فيمكنك استخدام
الخيار -c في bash:
lsCmd:=exec.Command("bash","-c","ls -a -l -h")lsOut,err:=lsCmd.Output()iferr!=nil{panic(err)}fmt.Println("> ls -a -l -h")fmt.Println(string(lsOut))}
تعيد البرامج المشغّلة خرجًا مماثلًا لما ستعيده لو شغّلناها
مباشرة من سطر الأوامر.
$ go run spawning-processes.go
> date
Thu 05 May 2022 10:10:12 PM PDT
لا يدعم date الخيار -x، لذا سيخرج مع رسالة خطأ ورمز إرجاع
غير صفري.
command exit rc = 1
> grep hello
hello grep
> ls -a -l -h
drwxr-xr-x 4 mark 136B Oct 3 16:29 .
drwxr-xr-x 91 mark 3.0K Oct 3 12:50 ..
-rw-r--r-- 1 mark 1.3K Oct 3 16:28 spawning-processes.go