- 締切済み
シェルスクリプト 結果表示
はじめまして。 シェルスクリプトを教えてください。 質問 ・nslookupで指定したipアドレスの 接続結果が成功なら0を表示 失敗なら1を表示 するというのがつくれません。お願いします なにかコマンドはコマンド結果に対して バックで表示されないcodeがあるらしいのですが。 ちなみにsolarisで #!/bin/sh で宜しくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- odacle
- ベストアンサー率0% (0/2)
バックで表示されないcodeがあるとはyou-mさんもおっしゃっているとおりで、返り値とか戻り値と呼ばれます。今回はそれが使えませんので標準出力を使います。 nslookupで検索した場合、見つからなかった場合には標準出力に ** server can't find 1.0.0.10.in-addr.arpa: NXDOMAIN のように表示されます。 これを利用すれば以下のようなスクリプトで解決できると思います。 $ cat ipcheck.sh #!/bin/sh if nslookup $1 2>&- | grep "server can't find" > /dev/null ; then echo 1 else echo 0 fi $ ./ipcheck.sh 210.150.25.37 0 $ ./ipcheck.sh 10.0.0.1 1 echoの部分をexitに変えれば戻り値として利用できます。前のコマンドの戻り値を確認するにはコマンドを実行した後にecho $?としてみてください。 手元にLinuxしかないため確認はできてませんが、Solarisのmanページを参照したので多分動くと思います。
- you-m
- ベストアンサー率58% (190/327)
参照URLは、SolarisのMANページのオンライン版です。 基本的にnslookupの返り値は、0か1しかありません。 意味としては、コマンドが正常終了したかどうかです。 つまり、処理の結果を表す返り値ではないため、質問者さんが思うような判別には使えないことになります。 どうしてもシェルスクリプトで、そのような処理を行う場合は、nslookupコマンドの出力する文字列を取り込むなり、ファイルに落とすなりして、解析するような処理が必要だと思います。