スクリプト内の既存の変数を置き換えるbashスクリプトにオプションの引数を渡すにはどうすればよいですか?例えば:
#!/bin/bash
#hostfinder.sh
#Find hosts in current /24 network
subnet=$(hostname -i | cut -d. -f1,2,3)
for j in \
$(for i in $subnet.{1..255}; do host $i; done | grep -v not | cut -d" " -f5)
do ping -c1 -w 1 $j; done | grep -i from | cut -d" " -f3,4,5 | tr ':' ' ' | \
sed -e 's/from/Alive:/'
これにより、現在のホストのIPが取得され、可能性のあるネイバーに対して逆引き参照が実行され、検出されたホスト名がpingテストされ、次のような出力が表示されます。
Alive: host1.domain (10.64.17.23)
Alive: host2.domain (10.64.17.24)
...
私をクレイジーと呼んでください、しかしそれはnmapよりずっと速く、素晴らしいリストを吐き出します。
とにかく、スクリプトを実行するときに、オプションで、クラスCネットワークアドレスの最初の3つのオクテットを$1引数として$subnet変数に渡したいと思います。例えば:
./hostfinder.sh 10.20.0
私の最初の考えは$subnet= $ 1のようなものを試すことでしたが、それはうまくいかないと思います。スクリプトをよりエレガントなものに書き直すことにはあまり興味がありません。ほとんどの場合、件名に何を入れるかについて興味があります。