首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell脚本错误:"For循环“没有抛出预期的输出

Shell脚本错误:"For循环“没有抛出预期的输出
EN

Stack Overflow用户
提问于 2022-04-05 11:06:51
回答 1查看 111关注 0票数 -1

我有json文件,它从文件中提取颜色值。出于某种原因,它只获取一段代码&对于其他代码,它会抛出错误。

片段

代码语言:javascript
复制
#!/bin/bash

clear

echo "Add the figma json file path"
read path

figma_json="$(echo -e "${path}" | tr -d '[:space:]')"

echo "*****************************************"


color_values=$(cat $figma_json | jq -r '.color')
color_keys=$(cat $figma_json | jq -r '.color | keys' |sed 's,^ *,,; s, *$,,'| tr -s ' ' | tr ' ' '_')

echo $color_keys


for c_key in $color_keys
do

    echo "key string: $c_key"

    echo $color_values | jq ".$c_key.value"
    echo "*********************************************"

done

输出

代码语言:javascript
复制
trimmed string: "gray1",
{
  "description": "",
  "type": "color",
  "value": "#333333ff",
  "extensions": {
    "org.lukasoppermann.figmaDesignTokens": {
      "styleId": "S:0b49d19e868ec919fac01ec377bb989174094d7e,",
      "exportKey": "color"
    }
  }
}
null
*********************************************
trimmed string: "gray2" //Expected output
"#333333ff"
*********************************************

如果我们查看第二个输出,它将输出gray2的十六进制值,这是预期的输出,请使用下面的链接获取json文件链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-05 11:54:25

目前还不清楚您的目标是什么,但这里有一种方法,您可以使用对jq的一个调用从JSON文件中读取数据,而且很可能不需要使用sedtr。选择和格式可以很容易地根据您的喜好进行调整。

代码语言:javascript
复制
jq -r '.color | to_entries[] | "\(.key): \(.value.value)"' "$figma_json"
代码语言:javascript
复制
gray1: #333333ff
gray2: #4f4f4fff
gray3: #828282ff
gray4: #bdbdbdff
gray5: #e0e0e0ff
gray6: #f2f2f2ff
red: #eb5757ff
orange: #f2994aff
yellow: #f2c94cff
green1: #219653ff
green2: #27ae60ff
green3: #6fcf97ff
blue1: #2f80edff
blue2: #2d9cdbff
blue3: #56ccf2ff
purple1: #9b51e0ff
purple2: #bb6bd9ff

演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71750689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档