2023年2月17日金曜日

シェルスクリプトでループ時の変数に要素を分割して受け取る方法

シェルスクリプトでループ時の変数に要素を分割して受け取る方法

概要

例えば awk で複数の結果を受け取ってそれをループして各要素を変数に格納する場合などに使えます

環境

  • Ubuntu 18.04
  • bash

サンプルコード

docker service ls | awk 'OFS="," {print $2,$4}' | while IFS=, read -r srv count
do
  echo ${srv}
  echo ${count}
done

解説

docker service ls の結果からサービス名とサービスの稼働数を取得してそれをループでそれぞれ表示しています

awk の結果は OFS="," で csv 形式にします
こうすることで while read 時に IFS=, を設定し awk の csv 結果を分割してすることができます
分割した結果は srv, count という変数にそれぞれ格納されます

for ループでも同じようなことができますがシェルスクリプトで結果をループしたい場合は while read を使う方法をおすすめします

0 件のコメント:

コメントを投稿