Golang program to execute a specified shell command with specified option

Here, we are going to learn how to execute a specified shell command without options in Golang (Go Language)?
Submitted by Nidhi, on May 30, 2021 [Last updated : March 05, 2023]

Executing a specified shell command with specified option in Golang

Problem Solution:

Here, we will execute a specified command with a specified option using the syscall.Exec() function. And, we will execute the "ls" shell command with the "-l" option and print output on the console screen.

Program/Source Code:

The source code to execute the specified shell command with the specified option is given below. The given program is compiled and executed on the ubuntu 18.04 operating system successfully.

Golang code to execute a specified shell command with specified option

// Golang program to execute a specified shell command
// with specified flag

package main

import "os"
import "os/exec"
import "syscall"

func main() {
	command, err := exec.LookPath("ls")
	if err != nil {
		panic(err)
	}

	args := []string{"ls", "-l"}

	err = syscall.Exec(command, args, os.Environ())
	if err != nil {
		panic(err)
	}
}

Output:

total 36
drwxr-xr-x    2 root     root         12288 Feb 18 00:56 bin
dr-xr-xr-x    1 root     root             0 May 30 20:43 dev
drwxr-xr-x    1 root     root          4096 May 30 20:43 etc
drwxr-xr-x    2 nobody   nobody        4096 Mar  9 19:36 home
drwxr-xr-x    2 root     root          4096 Feb 18 00:56 lib
lrwxrwxrwx    1 root     root             3 Feb 18 00:56 lib64 -> lib
dr-xr-xr-x    2 root     root             0 May 30 20:43 proc
drwx------    2 root     root          4096 Mar  9 19:35 root
dr-xr-xr-x    1 root     root             0 May 30 20:43 sys
drwxrwxrwt    1 root     root             0 May 30 20:43 tmp
drwxrwxrwx    1 root     root             0 May 30 20:44 tmpfs
drwxr-xr-x    1 root     root          4096 Mar 19 20:49 usr
drwxr-xr-x    4 root     root          4096 Mar  9 19:36 var

Explanation:

In the above program, we declare the package main. The main package is used to tell the Go language compiler that the package must be compiled and produced the executable file. Here, we imported the required packages to predefined functions.

In the main() function, we checked "ls" command exists or not, using exec.LookPath() function and get the handle for the command. After that, we executed the "ls" command with the "-l" option using the syscall.Exec() function and print the output of the "ls" command on the console screen.

Golang Shell Script Programs »





Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.