dubdub_count=3
for (( i=1; i<=${dubdub_count}; i++ )); do
my_apps --ammount=${dubdub_count}
done
プログラムはIPアドレスの例の結果を返します。
app1=10.10.10.1
app2=10.10.10.2
app3=10.10.10.3
これらのIPアドレスは他のサービスに使用されます。以下のようにapiserverコマンドを実行するためにapiserver.sh bashスクリプトを作成しています。
/usr/local/bin/apiserver --dubdub=http://${app1},http://${app2},http://{app3} --master
私のapiserver.shがmy_apps結果の動的結果を追加できるようにしたいです。
dubdub_count=3
スクリプトを変更すると、dubdub_count=4
次のように実行できるはずです。
/usr/local/bin/apiserver --dubdub=http://10.10.10.1:8080,http://10.10.10.2:8080,http://10.10.10.3,http://10.10.10.4 --master
dubdub_count=3
スクリプトを変更すると、dubdub_count=5
次のように実行できるはずです。
/usr/local/bin/apiserver --dubdub=http://10.10.10.1:8080,http://10.10.10.2:8080,http://10.10.10.3:8080,http://10.10.10.4:8080,http://10.10.10.5:8080 --master
要約質問は、my_appの結果をパラメータに自動的に追加する方法です--dubdub
。 my_appが6つのIPアドレスを返すと、my --dubdubも6つのIPアドレスを取得します。 bashスクリプトを手動で編集する必要はありません。
dynamic var in bash
stackoverflowでasキーワードを読みましたが、まだ最良の解決策が見つかりません。 my_apps開発者に結果の方法を変更するように助言する必要がありますか?
ベストアンサー1
を追加してhttp://
使用し:8080
、sed
一緒にpaste -sd,
集めてコンマで区切ることができます。
urllist=$(
for ... done \
| cut -d= -f2 \
| sed 's#.*#http://&:8080#' \
| paste -sd, -
) # output: http://10.10.10.1:8080,http://10.10.10.2:8080,http://10.10.10.3:8080
/usr/local/bin/apiserver --dubdub="$urllist" --master
cut
または、1つのコマンドでを実行しsed
て一緒にpaste
実行しますawk
。
urllist=$(
for ... done \
| awk -F= 'NR>1{printf ","};{printf "http://"$2":8080"}'
) # output: http://10.10.10.1:8080,http://10.10.10.2:8080,http://10.10.10.3:8080
/usr/local/bin/apiserver --dubdub="$iplist" --master