iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >在golang程序中运行交互式shell脚本
  • 795
分享到

在golang程序中运行交互式shell脚本

2024-04-05 00:04:13 795人浏览 八月长安
摘要

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《在golang程序中运行交互式shell脚本》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《在golang程序中运行交互式shell脚本》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我想在golang程序中运行交互式shell脚本, 例如包装“ping 8.8.8.8”、“python”、“bc”、“Mysql -h -p -u -p”。 当 golang 程序完成调用交互式命令或 shell 并留下与用户交互时,它应该退出。

我尝试过“exec.command(“Python”).run()”,但是golang程序刚刚完成,没有给我留下任何东西。

func (h ConnectHandler)Connectmysql()  {
    logrus.Debug("ConnectMysql, script:",common.CONF.FilePath.MySQLConnectScriptPath)
    err :=exec.Command("bash",common.CONF.FilePath.MySQLConnectScriptPath).Run()
    if err != nil{
        logrus.Errorf("ConnectMySQL failed, exit 1,%s",err)
        os.Exit(1)
    }
}


解决方案


听起来您想用您尝试启动的命令替换当前进程。启动另一个命令后,您的 go 程序就消失了,调用者与启动的程序进行交互,就好像它是最初启动的一样。

为此,您需要低级 syscall.Exec 函数。通常您不应期望它会返回。请注意,您需要提供许多详细信息,例如要运行的实际二进制文件以及更高级别包装器不需要的环境。 (google 快速搜索即可找到 this detailed writeup。)

import "os"
import "syscall"
err := syscall.exec("/bin/ls", []string{"ls", "-l", "/"}, os.environ())
// we don't expect this to ever return; if it does something is really wrong
os.panic(err)

就底层 unix 系统调用而言,os.startprocessexec.cmd 等更高级别的接口都在 execvefork(2) 子进程。 >(2) 在那个孩子身上。当您的 go 进程退出时,该子进程将成为孤立,并且系统 init 进程将成为其新的父进程。 shell 只是看到 go 进程已经退出,并会产生一个新的 shell 提示符。

将 command 的 stdin、stdout 和 stderr 连接到父进程的 stdin、stdout 和 stderr。另外,在 exec.command 中将 -c 提供给 bash,否则 bash 将尝试运行您的程序,就好像它是 shell 脚本一样。

例如启动交互式 python 控制台:

func main() {
    fmt.Println("Before Python shell:")
    cmd := exec.Command("bash", "-c", "/usr/bin/python3")
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    _ = cmd.Run() // add error checking
    fmt.Println("After Python shell")
}

到这里,我们也就讲完了《在golang程序中运行交互式shell脚本》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!

您可能感兴趣的文档:

--结束END--

本文标题: 在golang程序中运行交互式shell脚本

本文链接: https://www.lsjlt.com/news/596788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在golang程序中运行交互式shell脚本
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《在golang程序中运行交互式shell脚本》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我...
    99+
    2024-04-05
  • Linux Shell交互式自动化运维程序
    Expect是Linux操作系统下的一个用来处理交互操作,系统默认是没有安装expect库,所以执行expect会提示找不到命令,需要手动安装,其它安装也比较简单,可以通过二进制源码包编译配置进行安装,也可以通过网络借助yum源来安装,yu...
    99+
    2023-06-05
  • 怎么在Shell脚本中实现Expect免交互
    本篇文章给大家分享的是有关怎么在Shell脚本中实现Expect免交互,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Expext概述Expect是建立在tcl基础上的一个工具,...
    99+
    2023-06-09
  • 在 PHP 中运行 Shell 脚本并打开 Shell 文件
    PHP 允许我们使用 shell_exec(); 处理 shell 文件的函数。然而,如果你的操作系统是 Windows,你应该考虑使用 popen() 和 pclose() 函数,因为管道是在文本模...
    99+
    2023-10-12
    php ssh
  • 如何实现Shell脚本中非交互式修改密码
    本篇内容介绍了“如何实现Shell脚本中非交互式修改密码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1:使用chpasswdchpassw...
    99+
    2023-06-09
  • 如何在 Linux 中运行一个 Shell 脚本
    本篇内容介绍了“如何在 Linux 中运行一个 Shell 脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在 Linux 中有两种运行 ...
    99+
    2023-06-15
  • Linux shell:脚本判断进程是否在运行
    一.命令说明 ps aux | grep 进程名 | grep -v grep :进程存在则输出信息,不存在则没输出 ps -ef | grep 进程名 | grep -v grep | wc -l ...
    99+
    2023-10-05
    linux 服务器 运维
  • 在 github actions 中运行 golang 的 pre-commit.com 脚本
    欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《在 github actions 中运行 golang 的 pre-commit.com 脚本》,这篇文章主要讲到等等知识,如果你对...
    99+
    2024-04-04
  • java程序的jar包怎么利用shell脚本运行
    这篇文章将为大家详细讲解有关java程序的jar包怎么利用shell脚本运行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序...
    99+
    2023-05-31
    shell java jar
  • 如何在shell中运行Python脚本并记录路径?
    在日常的开发工作中,我们常常需要通过Shell脚本来调用Python脚本完成一些任务,但是如果不记录Python脚本的路径,我们就需要手动输入脚本路径,这样就会造成一些不必要的麻烦。那么,如何在Shell中运行Python脚本并记录路径呢...
    99+
    2023-10-27
    path 日志 shell
  • 如何在shell中运行Python脚本并记录日志?
    在现代软件开发中,Python 已经成为了不可或缺的工具。而 shell 脚本也是我们日常工作中经常使用的工具。在一些场景下,我们需要在 shell 脚本中调用 Python 脚本,并且需要记录 Python 脚本的日志。本文将介绍如何在...
    99+
    2023-10-27
    path 日志 shell
  • Linux 查询正在运行的shell脚本命令
    查看当前运行的所有进程。 ps -A 如果太多了找不到,看的眼花,可以加条件 grep是分组 查看正在运行的shell脚本的进程shell脚本就是 sh ps -ef |grep  sh 如图下面就是查询出来的所有sh脚本,看第...
    99+
    2023-09-03
    linux 运维 服务器
  • 如何使用Go在Shell中运行程序?
    Go语言是一种开发高效、高可靠性和高性能软件的编程语言,它具有静态类型、垃圾收集和并发编程等特性。如果您想在Shell中使用Go语言运行程序,这篇文章将为您提供一些基本的指导和步骤。 安装Go语言环境 在开始使用Go语言编写程序之前,...
    99+
    2023-06-14
    shell ide path
  • PHP 学习笔记:如何在 UNIX Shell 中运行 PHP 脚本?
    PHP 是一种广泛使用的服务器端脚本语言,它可以用来编写动态网页、命令行脚本等。在 UNIX 系统中,我们可以使用 Shell 来运行 PHP 脚本,本文将介绍如何在 UNIX Shell 中运行 PHP 脚本。 安装 PHP 在开始...
    99+
    2023-08-07
    学习笔记 unix shell
  • 如何在Linux中运行JavaScript脚本?
    在Linux系统中,JavaScript脚本可以通过多种方式运行,包括使用Node.js、Rhino、SpiderMonkey等JavaScript解释器。本文将介绍几种在Linux中运行JavaScript脚本的方法。 1. 使用Node...
    99+
    2023-09-10
    javascript shell linux
  • 使用shell脚本怎么实现多进程运行
    这篇文章将为大家详细讲解有关使用shell脚本怎么实现多进程运行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。例子for ip in 192.168.56.{1...
    99+
    2023-06-09
  • 如何使用Java编写Shell脚本并在Unix系统中运行?
    Java 是一种广泛使用的编程语言,而 Shell 脚本则是 Unix 系统中常见的一种脚本语言。使用 Java 编写 Shell 脚本可以结合两者的优势,使得脚本更加易读、易维护和易扩展。在本文中,我们将介绍如何使用 Java 编写 Sh...
    99+
    2023-09-12
    shell unix 学习笔记
  • 怎么用Shell脚本获取进程的运行时间
    这篇文章主要介绍“怎么用Shell脚本获取进程的运行时间”,在日常操作中,相信很多人在怎么用Shell脚本获取进程的运行时间问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Shell脚本获取进程的运行时间...
    99+
    2023-06-09
  • Shell脚本如何在Apache服务器上存储和运行?
    Apache服务器是一款被广泛使用的Web服务器软件,而Shell脚本则是一种可以在Unix/Linux操作系统上运行的脚本语言。在Apache服务器上存储和运行Shell脚本可以帮助我们实现自动化运维,提高工作效率。本文将介绍如何在Ap...
    99+
    2023-10-17
    存储 shell apache
  • 如何在 Linux 命令行中运行 Python 脚本?
    Python 是一种高级编程语言,被广泛应用于数据科学、机器学习、Web 开发等领域。在 Linux 操作系统中,Python 是一个默认安装的解释器,用户可以通过命令行界面(CLI)来运行 Pyth...
    99+
    2023-09-02
    python linux 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作