为了账号安全,请及时绑定邮箱和手机立即绑定

使用 golang 从命令行读取输入到 shell 脚本 exec

使用 golang 从命令行读取输入到 shell 脚本 exec

Go
哔哔one 2023-06-19 17:10:26
我正在使用 go 来使用 exec.command 运行一个 shell 脚本,如下所示,我想使用命令行 say 获取输入参数,i我的输出应该基于i,我该怎么做?i := os.Args[1:2]out, err := exec.Command("bash", "-c", "tail -n 1 /var/log/apache2/access.log | awk '{print $i/1024}' >> mem_usage.csv").Output()if err != nil {    fmt.Println(err.Error())    return }我怎么能在 shell 脚本中使用它?没有i它工作正常,即如果我放$1或$2它工作正常但我希望用户给我的位置i然后相应地计算。
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

您需要exec相应地格式化 -command 字符串。

社会:

fmt.Sprintf("awk '{print $%d/1024}'", i)

这给出了:awk '{print $1/1024}'对于i = 1awk '{print $2/1024}'对于i = 2

fmt.Sprintf接受一个格式字符串和传递给这个字符串的参数,并返回格式化的字符串。( https://golang.org/pkg/fmt/#Sprintf )

这需要插入到您的exec命令中:

i := 2
awkPart := fmt.Sprintf("awk '{print $%d/1024}'", i)
out, err := exec.Command("bash", "-c", "tail -n 1 /var/log/apache2/access.log | "+awkPart+" | tee -a mem_usage.csv").Output()

您也许应该尝试更多地反汇编您的命令以进行维护,但这不是问题的一部分。


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信