DEV Community

晓道
晓道

Posted on

jq在区块链开发中的使用

#jq

最近在弄一些l2方面的开发,发现jq是一个使用比较广泛的工具,下面写个简单的教程.

jq是一个用来快速读写 json文件的工具,而我们写合约常用的hardhat,forge等工具都广泛运用json文件,
使用jq就可以做到和json相关的都自动化,免得自己老是vi编辑,手动编辑容易错.

安装 jq

# Debian系,如 Ubuntu
sudo apt-get install jq

# RedHat系, 如 CentOS
yum install jq

# npm 安装,不建议这种,环境问题很不好搞
npm install -g jq
Enter fullscreen mode Exit fullscreen mode

工具太简单,随便学学就会了,我直接写两个例子.

一些例子

1、根据hardhat 的部署文件生成地址json

genAddr:
  #!/bin/bash
  cd ./packages/contracts-bedrock/deployments/getting-started
  addrtext="{}"
  for file in ./*
  do
      if test -f $file
      then
        addr=$(jq -r ".address" $file)
        filename=$(basename $file .json)
        addrtext=$(echo $addrtext |jq ".+{\"$filename\":\"$addr\"}")
      fi
  done
  echo "$addrtext">../../../../addresses.json
Enter fullscreen mode Exit fullscreen mode

这里是结合 bash的写法,核心就两句

jq -r ".address" $file //获取json文件中的address
Enter fullscreen mode Exit fullscreen mode
jq ".+{\"$filename\":\"$addr\"}" //根据上面获取的地址在json文件中写一个键值
Enter fullscreen mode Exit fullscreen mode

2、修改创世文件给自己加点钱

#!/bin/bash
DUMP=$(cat $GENESIS_FILE |jq '.alloc += {"0x2BBBBBBBBBBBBBBBBBBBBBBBBB": {balance: "10000000000000000000"}}')
echo "$DUMP" | jq . > $GENESIS_FILE
Enter fullscreen mode Exit fullscreen mode

想要更深入的学习,直接看官方文档

https://jqlang.github.io/jq/

Top comments (0)