変数を記述するファイルがあります。
IP_1="xx.xx.xx.xx" ID_1="yyyyy"
IP_2="xx.xx.xx.xx" ID_2="yyyyy"
...
IP_6="xx.xx.xx.xx" ID_6="yyyyy"
ワイルドカード文字を含む変数を使用してwgetコマンドを実行したいと思います。
wget --timeout=5 --wait=2 --tries=3 http://"$IP_* "/getcsv/Log_"$EQ_ *".csv
--output-document=/home/administrator/Logs/"$ID_*"/Log_"$EQ_*"$(日付+%F%T).csv-dv
コマンドを実行した後、コンピュータは変数を認識しないように見えます。
IP_2+ID_2の代わりに変数ファイルのIP_1+ID_1を最初に使用するスクリプトを作成するにはどうすればよいですか?
私は[]、{}、他の""と配列を使って異なるバージョンを試しました。残念ながら仕事はありません。
ありがとう
ありがとう
答え1
あなたはこれをする必要があります
for i in {1..6}; do
ip_var="IP_$i"
id_var="ID_$i"
wget ... "http://${!ip_var}/..." -O "/home/administrator/Logs/${!id_var}/..."
done
これは、マニュアルの説明に従って「可変間接参照」を使用します。https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
しかし、番号付けされた変数は厄介です。代わりに配列を使用してください。
ip=( "xx.xx.xx.xx" "xx.xx.xx.xx" ... "xx.xx.xx.xx" )
id=( "yyyyy" "yyyyy"... "yyyyy" )
for ((i=0; i < ${#ip[@]}; i++)); do
wget ... "http://${ip[i]}/..." -O "/home/administrator/Logs/${id[i]}/..."
done