bashスクリプトでループのために使用して複数行のコマンドで挿入行

Aleksi Daskalov:

私は複数行のコマンドを複数回実行し、私は、各反復でいくつかの値を変更していますbashスクリプトを持っています。ここでは以下の私のコードは次のとおりです。

for (( peer=1; peer<=$nodesNum;peer++ ))
do  
   echo "Starting peer $peer"

nodeos -p eosio -d /eosio_data/node$peer --config-dir /eosio_data/node$peer --http-server-address=127.0.0.1:$http  \
--p2p-listen-endpoint=127.0.0.1:$p2p --access-control-allow-origin=* \
-p "user$peer" --http-validate-host=false --signature-provider=EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3  \
 --max-transaction-time=1000 --genesis-json /eosio_data/genesis.json --wasm-runtime=wabt --max-clients=2000 -e  \
--plugin eosio::chain_plugin --plugin eosio::producer_plugin --plugin eosio::producer_api_plugin  \
 --plugin eosio::chain_api_plugin \
--p2p-peer-address localhost:8888 \
 &>eosio_data/logs/nodeos_stderr$p2p.log &   \
sleep 1
http=$((http+1))
p2p=$((p2p+1))
done

私は--p2pピア・アドレスのローカルホストを追加する必要があります。$((9010 + $ピア))、複数行のコマンドの一部として、各ピアのために複数回を命じます。bashのスクリプトへの新しいIおよびIは、同様の例を見つけることができませんでした。

chepner:

それは完全にあなたが必要なものをクリアしていないのですが、私はそれが次のようなものだと思います。配列--p2p-peer-addressのオプションは、共通オプションの大きなセットに組み込まれ、作成されます。呼び出すたびにnodeos、その後は共通のオプションに加えて、いくつかのピア固有のオプションがあります。

# for example
HTTP_BASE=8080
P2P_BASE=12345

# Set of --p2p-peer-address options for shared by all calls.
for ((peer=1; peer <= $nodesNum; peer++)); do 
    peer_args+=( 
      --p2p-peer-address
      localhost:$((9010+$peer)) 
    )
done

# These are the same for all calls
fixed_args=(
    -p eosio
    "--access-control-allow-origin=*"
    --http-validate-host=false
    --signature-provider=EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    --max-transaction-time=1000
    --genesis-json /eosio_data/genesis.json
    --wasm-runtime=wabt
    --max-clients=2000
    -e
    --plugin eosio::chain_plugin
    --plugin eosio::producer_plugin
    --plugin eosio::producer_api_plugin
    --plugin eosio::chain_api_plugin
    --p2p-peer-address localhost:8888
    "${peer_args[@]}"
)

for ((peer=1; peer<=$nodesNum; peer++)); do
    # Call-specific arguments, followed by common arguments.
    # $peer is either incorporated into each argument value
    nodeos -d /eosio_data/node$peer \
           --config-dir /eosio_data/node$peer \
           --http-server-address=127.0.0.1:$((HTTP_BASE + $peer)) \
           --p2p-listen-endpoint=127.0.0.1:$((P2P_BASE + $peer)) \
           -p "user$peer" \
           "${fixed_args[@]}" \
           &> eosio_data/logs/nodeos_stderr$((P2P_BASE + $peer)).log & 
    sleep 1
done

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=34094&siteId=1