リモートシステムをpingするBashスクリプトがハングします。

リモートシステムをpingするBashスクリプトがハングします。

ping関数が1つしかないbash関数というファイルがあります。

#!/usr/bin/env bash

ping() {
  ping -c 1 $i.local
}

このファイルはbashという別のファイルによってロードされ、pingerping機能を使用して複数のリモートコンピュータに接続しようとします。

#!/usr/bin/env bash

. /home/ping #load ping function

REMOTES=('remote1' 'remote2' 'remote3')

for i in "${REMOTES[@]}"; do

    ping $i

done

実行すると、./pingerIまで停止します。コマンドラインを手動でCTRL-C入力すると、ping -c 1 remote1.localリモートコンピュータに正常にpingを送信できます。スクリプトにどのような問題がありますか?

編集:関数名を「ping」に指定するのに問題があることがわかりました。関数名が別のものとして指定されていると、うまく機能するようです。

答え1

問題は、関数名を「ping」と指定することにあることがわかりました。関数名が別のものとして指定されていると、うまく機能するようです。

#!/usr/bin/env bash

pingRemote() {
  ping -c 1 $i.local
}

#!/usr/bin/env bash

. /home/ping #load ping function

REMOTES=('remote1' 'remote2' 'remote3')

for i in "${REMOTES[@]}"; do

    pingRemote $i

done

関連情報