コマンドがnullまたは出力を提供しないかどうかをテストするために使用される条件

コマンドがnullまたは出力を提供しないかどうかをテストするために使用される条件

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

cutIPの詳細を取得するために区切りコマンドを使用しています。 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_addrip_addr

おすすめ記事