ping
関数が1つしかないbash関数というファイルがあります。
#!/usr/bin/env bash
ping() {
ping -c 1 $i.local
}
このファイルはbashという別のファイルによってロードされ、pinger
ping機能を使用して複数のリモートコンピュータに接続しようとします。
#!/usr/bin/env bash
. /home/ping #load ping function
REMOTES=('remote1' 'remote2' 'remote3')
for i in "${REMOTES[@]}"; do
ping $i
done
実行すると、./pinger
Iまで停止します。コマンドラインを手動で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