私はメインリストを読み込むスクリプトをwhileループを使ってList A
と呼んでいます。bashスクリプト - 複数の条件を処理するための効果的なcase文を書く方法
一覧A:
east-1-1
east-1-3
east-1-7
west-1-10
south-1-2
私case
で私case
にし、それらの項目ごとに記載されているとおり:私がやりたい何
east-1-1
east-1-2
east-1-3
east-1-4
east-1-5
east-1-6
east-1-7
west-1-1
west-1-10
south-1-1
south-1-2
north-1-1
は、このリストに対してそれをチェックしています*
case "${cluster}" in
east-1-1)
echo "${cluster}:${getCount} * ";;
east-1-3)
echo "${cluster}:${getCount} * ";;
east-1-7)
echo "${cluster}:${getCount} * ";;
west-1-10)
echo "${cluster}:${getCount} * ";;
south-1-2)
echo "${cluster}:${getCount} * ";;
esac
私はこれを関数内で行い、case
のステートメントを使用していますが、これは間違っていると思います。より良い方法があるかどうかを知りたいですか? if-then-else
を使用する必要がありますか? case
でこれを行うことはできますか?
もし私がこのアプローチについて助けを得たり、これを書く良い方法があれば教えてください。進行中
CODE:
#!/usr/local/bin/bash
MAP=./.clusterinfo
if ! [ -f "$MAP" ]; then
echo "Cluster Map not found."
exit 1
fi
while IFS='' read -r cluster; do
#Function runQuery
runQuery()
{
getCount=$(PGPASSWORD=Abc123Pa55word psql -h myapp-"${cluster}".foobar.com -U foo -d dev -p 5439 -t -c "select count(*) from pg_database;")
case "${cluster}" in
east-1-1)
echo "${cluster}:${getCount} * ";;
east-1-3)
echo "${cluster}:${getCount} * ";;
east-1-7)
echo "${cluster}:${getCount} * ";;
west-1-10)
echo "${cluster}:${getCount} * ";;
south-1-2)
echo "${cluster}:${getCount} * ";;
esac
echo "${cluster}:${getCount}"
}
#Execute
runQuery
done < "$MAP"
電流出力:
east-1-1: 50 *
east-1-1: 50
east-1-2: 8
east-1-3: 58 *
east-1-3: 58
east-1-4: 5
east-1-5: 5
east-1-6: 4
east-1-7: 30 *
east-1-7: 30
west-1-1: 4
west-1-10: 50 *
west-1-10: 50
south-1-2: 30 *
south-1-2: 30
予想される出力:
east-1-1: 50 *
east-1-2: 8
east-1-3: 58 *
east-1-4: 5
east-1-5: 5
east-1-6: 4
east-1-7: 30 *
west-1-1: 4
west-1-10: 50 *
south-1-2: 30 *
さて、それでした!それを指摘していただきありがとうございます!今はうまくいく。 – noober