【问题标题】:BASH script reading variable from another .txt fileBASH 脚本从另一个 .txt 文件中读取变量
【发布时间】:2021-08-01 18:17:05
【问题描述】:

我有 output.txt 文件,我的脚本在其中存储了一些输出,我只需要获取 ID 的输出,它位于 myscript.sh 文件中 output.txt 的第一行中,有人可以建议一种方法吗这样做

{"id":"**dad04f6d-4e06-4420-b0bc-cb2dcfee2dcf**","name":"new","url":"https://dev.azure.com/vishalmishra2424/82c93136-470c-4be0-b6da-a8234f49a695/_apis/git/repositories/dad04f6d-4e06-4420-b0bc-cb2dcfee2dcf","project":{"id":"82c93136-470c-4be0-b6da-a8234f49a695","name":"vishalmishra","url":"https://dev.azure.com/vishalmishra2424/_apis/projects/82c93136-470c-4be0-b6da-a8234f49a695","state":"wellFormed","revision":12,"visibility":"public","lastUpdateTime":"2021-04-22T14:24:47.2Z"},"size":0,"remoteUrl":"https://vishalmishra2424@dev.azure.com/vishalmishra2424/vishalmishra/_git/new","sshUrl":"git@ssh.dev.azure.com:v3/vishalmishra2424/vishalmishra/new","webUrl":"https://dev.azure.com/vishalmishra2424/vishalmishra/_git/new","isDisabled":false}

【问题讨论】:

  • 您搜索了什么,找到了什么?您尝试过什么,它是如何失败的?
  • 我搜索了一些文档并尝试了以下文档,但它没有给我我所期望的while read line; do [[ $line =~ id ]] && declare "$line" && break done < Repooutput.txt
  • 我建议:jq -r '.id' output.txt

标签: json bash shell unix scripting


【解决方案1】:

您发布的 sn-p 看起来像 JSON 和一个名为 file 的实用程序 猜测不同类型的文件也可以这样说:

$ file output.txt
output.txt: JSON data

您应该使用 JSON 感知工具来提取 id 的值,例如 jq:

$ jq -r '.id' output.txt
**dad04f6d-4e06-4420-b0bc-cb2dcfee2dcf**

jshon:

$ jshon -e id < output.txt
"**dad04f6d-4e06-4420-b0bc-cb2dcfee2dcf**"

【讨论】:

  • 非常感谢您的帮助
  • 当我直接在 shell 中运行它时,它工作正常。但是当我将它包含在脚本中时,访问被拒绝。知道我在这里做错了什么。 $ jq -r '.id' Repooutput.txt dad04f6d-4e06-4420-b0bc-cb2dcfee2dcf
  • $ sh test.sh test.sh: line 3: /c/ProgramData/chocolatey/bin/jq: Permission denied
  • 嗯,我不知道。可能是 Windows 的问题,但我不知道如何使用 Windows,抱歉。
猜你喜欢
  • 2012-07-22
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
相关资源
最近更新 更多