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/

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up