2016-08-25 5 views
0

私は起動パラメータ(サーバIP、ユーザログイン、ルートログイン)を入力する作業スクリプトをいくつか持っていますが、毎回このスクリプトを再起動する必要があります別のサーバー、私は、サーバーのIP変数を変更するために、スクリプトを編集する必要があります。 これを変更して変数にIPアドレスを入力する方法はありますか?配列によっては、最初のIPでスクリプトが終了したら、2番目に進むなどしてIPリストの最後に移動しますか?bashスクリプトの完了後、変数を変更してスクリプトを再起動します

スクリプトの例:

##!/bin/bash 

serv_address="xxx.xx.xx.xxx" 

"here goes some script body" 

答えて

1

本当に配列を必要とします。配列をループで繰り返し処理できます。

serv_address=(xxx.xx.xx.xxx yyy.yy.yyy.yy) 

for address in "${serv_address[@]}"; do 
    if ! ping -c 1 "$serv_address"; then 
     echo "$serv_address is not available" >&2 
     continue 
    fi 
    # Do some stuff here if the address did respond. 
done 
+0

ありがとう、それは動作します! しかし、私のスクリプトにはいくつかのチェックが含まれています。何かが好き: if! ping -c 1 $ serv_address&>/dev/null; echo "$ serv_addressが利用できません" 終了1 fi アレイの場合 - このチェックを書き直すにはスクリプトは終了せず、配列内の次のIPアドレスに移動しますか? –

+0

'bash'は他の言語で期待されるように動作する' continue'と 'break'コマンドを持っています:' continue'はループの次の繰り返しに直接移動し、 'break'はループを早期に終了します。 – chepner

+0

ありがとう!できます! –

1

#!/bin/bash 
while read ip 
do 
#some command on "$ip" 
done<ip.txt # Your text file fed to while loop here 

やbash配列

declare ip_array=(xxx.xx.xx.xxx xxx.xx.xx.xxx xxx.xx.xx.xxx) 
for ip in "${ip_array[@]}" 
do 
#something with "$ip" 
done 
を使用するスクリプトを変更し、その後

$ cat ip.txt 
xxx.xx.xx.xxx 
xxx.xx.xx.xxx 
xxx.xx.xx.xxx 
xxx.xx.xx.xxx 

のようにIPSを保存するためのテキストファイルを使用します

両方を使用すると、後でIPアドレスを追加/削除する柔軟性が得られます。

+0

ありがとうございます! しかし、私のスクリプトにはいくつかのチェックが含まれています。何かが好き: if! ping -c 1 $ serv_address&>/dev/null; echo "$ serv_addressが利用できません" 終了1 fi アレイの場合 - このチェックを書き直すにはスクリプトは終了せず、配列内の次のIPアドレスに移動しますか? –

関連する問題