AIXの各LPARに対して、HMCでIPアドレス収集を実行しています。
$ lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names=ABCD123
ABCD123:Not Activated::Unknown
$ lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names=ABCD456
ABCD456:Running:10.8.34.21:VIOS 2.2.5.20
cut
IPの詳細を取得するために区切りコマンドを使用しています。 IP以外の値は出力データではありません。
$ lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names=ABCD123 | cut -d : -f3
10.8.34.21
$ lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names=ABCD456 | cut -d : -f3
一部のサーバーのIPアドレスは利用できません。不明な値を割り当てるためにnullまたは出力のないコマンドを無視するようにifコマンドに指示する方法
この条件をテストして価値のないデータを取得する方法を教えてください。次の変数を割り当てることができます。ipaddr=unknown
ベストアンサー1
for name in ABCD123 ABCD456; do
ip_addr=$( lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names="$name" | cut -d : -f 3 )
printf 'Got IP address "%s" for lpar name "%s"\n' "${ip_addr:-unknown}" "$name"
done
空の場合、または変数が設定されていない場合(ここでは常に値に設定されていますが空になる場合があります)、パラメータ拡張は${ip_addr:-unknown}
文字列に展開され、そうでない場合は変数値に拡張されます。unknown
$ip_addr
ip_addr