Golang program to execute a specified shell command with multiple options

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

Executing a specified shell command with multiple options 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 "-l","-t", "-r","-a" options and print output on the console screen.

Program/Source Code:

The source code to execute specified shell command with multiple options 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 multiple options

// Golang program to execute a specified shell
// command with multiple options

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", "-t", "-r", "-a"}

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

Output:

total 44
lrwxrwxrwx    1 root     root             3 Mar  9  2020 lib64 -> lib
drwxr-xr-x    2 root     root          4096 Mar  9  2020 lib
drwxr-xr-x    2 root     root         12288 Mar  9  2020 bin
drwx------    2 root     root          4096 Mar  9  2020 root
drwxr-xr-x    4 root     root          4096 Mar  9  2020 var
drwxr-xr-x    2 nobody   nogroup       4096 Mar  9  2020 home
drwxr-xr-x    1 root     root          4096 Feb 22 21:52 usr
drwxr-xr-x    1 root     root          4096 May 31 02:55 etc
-rwxr-xr-x    1 root     root             0 May 31 02:55 .dockerenv
drwxr-xr-x    1 root     root          4096 May 31 02:55 ..
drwxr-xr-x    1 root     root          4096 May 31 02:55 .
drwxrwxrwt    1 root     root             0 May 31 02:55 tmp
dr-xr-xr-x    1 root     root             0 May 31 02:55 sys
dr-xr-xr-x    2 root     root             0 May 31 02:55 proc
dr-xr-xr-x    1 root     root             0 May 31 02:55 dev
drwxrwxrwx    1 root     root             0 May 31 02:55 tmpfs

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 the exec.LookPath() function and get the handle for the command. Then we prepared the string array for command options. After that, we executed the "ls" command with the "-l","-t", "-r","-a" options 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.