Linux Command Line Script

Linux Command Line Script

Command Line Variable

리눅스에서 Command Line Variable을 사용하기 위해서는 "변수명=값" 을 사용하고, 그 변수명은 다른 Command Line 명령 안에서 사용하기 위해서는 "$변수명"을 사용한다. 기존의 변수를 Clear하기 위해서는 unset 명령을 사용한다.

    $ ADDR="tb1q4m69lp7vexrtsuj9hwt7x78dnrknjkur2uektv"
    $ echo $ADDR
    $ unset ADDR     //변수 삭제

어떤 명령을 실행하고 그 결과를 변수에 넣기 위해서는 "변수명=$(명령어)" 혹은 "변수명=`명령어` 를 사용한다.

    $ ADDR1=$(bitcoin-cli getnewaddress)
    $ ADDR2=`bitcoin-cli getnewaddress`   //위와 동일
    $ echo $ADDR1

JQ

jq는 Lightweight command line JSON parser 이로서, JSON RPC가 리턴하는 JSON 데이타 중 일부 값을 발췌할 때 유용하게 사용될 수 있다. JQ는 다음과 같이 설치할 수 있다. (참고: https://stedolan.github.io/jq/)

    $ sudo apt-get install jq

bitcoin-cli 등과 같은 JSON RPC 클라이언트는 실행 결과값을 JSON 으로 출력할 수 있다. 예를 들어, getaddressinfo 명령은 다음과 같은 JSON 텍스트를 출력한다.

$ bitcoin-cli getaddressinfo tb1q4m69lp7vexrtsuj9hwt7x78dnrknjkur2uektv
{
  "address": "tb1q4m69lp7vexrtsuj9hwt7x78dnrknjkur2uektv",
  "scriptPubKey": "0014aef45f87ccc986b87245bb97e378ed98ed395b83",
  "ismine": true,
  "solvable": true,
  "desc": "wpkh([9d1456ef/0'/0'/21']03ac9c07ce0c91056018c238dafd933c7bc709ba8b79d9bf499fc53634eb6b6bb6)#g4v26e0y",
  "iswatchonly": false,
  "isscript": false,
  "iswitness": true,
  "witness_version": 0,
  "witness_program": "aef45f87ccc986b87245bb97e378ed98ed395b83",
  "pubkey": "03ac9c07ce0c91056018c238dafd933c7bc709ba8b79d9bf499fc53634eb6b6bb6",
  "ischange": false,
  "timestamp": 1645034898,
  "hdkeypath": "m/0'/0'/21'",
  "hdseedid": "52918dba8457ce58b0ac0292e0c04b146a66cc84",
  "hdmasterfingerprint": "9d1456ef",
  "labels": [
    ""
  ]
}

이 JSON 텍스트를 Pipe를 통해 jq에 넘기고 이 중 특정 필드(예: pubkey)를 발췌할 수 있다. 아래는 이러한 예를 표시한 것인데, -r 은 출력을 JSON이 아닌 문자열로 출력하는 옵션이고, '.pubkey' 는 JSON 루트(.) 밑의 pubkey 필드를 의미한다. 만약 jq -r '.' 와 같이 쓰면, JSNO 문자열 전체를 출력할 것이다. 여기서 Dot(.)는 JSON의 루트를 의미하며, 그 밑에 필드명을 적어 필터링 할 수 있다. 아래 (2)번 예는 jq 결과값을 변수에 담는 예이다.

(1) jq 사용
$ bitcoin-cli getaddressinfo tb1q4m69lp7vexrtsuj9hwt7x78dnrknjkur2uektv | jq -r '.pubkey'
03ac9c07ce0c91056018c238dafd933c7bc709ba8b79d9bf499fc53634eb6b6bb6

(2) 변수에 jq 결과 담기
$ PUBKEY=$(bitcoin-cli getaddressinfo tb1q4m69lp7vexrtsuj9hwt7x78dnrknjkur2uektv | jq -r '.pubkey')

jq는 JSON Array의 경우 '.[0]' 와 같이 원하는 인덱스(zero based)를 쓸 수 있다. 아래는 listreceivedbyaddress 명령이 리턴하는 결과 배열 중 첫번째 요소를 리턴하는 것이다.

    $ bitcoin-cli listreceivedbyaddress | jq -r '.[0]'

배열 인덱스를 사용한 결과에서 다시 특정 필드값을 얻기 위해서는 아래와 같이 | 필터링을 사용할 수 있다.

    $ bitcoin-cli listreceivedbyaddress | jq -r '.[0] | .amount'
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.