如何在函数调用的if-else条件下用一些静态值填充缺失的列



如何在缺失的列中放置一些值,正如你们看到的,下面的代码正在工作,但在in else条件下,它没有填充列值。

我需要做什么把somevalues在缺失的区域。我特别想填充nologin?

#!/bin/bash
###########
printf "n"
marker=$(printf "%0.s-" {1..73})
printf "|$marker|n"
printf "| %-15s | %-15s | %-35s |n"  "Hostname" "RedHat Vesrion" "Perl Version"
printf "|$marker|n"
remote_connect() {
   target_host=$1
   remote_data=($(
   ssh -i /home/nxf59093/.ssh/ssh_prod "root@${target_host}" -o StrictHostKeyChecking=no -o PasswordAuthentication=no "
        rhelInfo=$(cat /etc/redhat-release | awk 'END{print $7}')
        perlInfo=$(rpm -qa | grep -i mod_perl)
        echo $rhelInfo $perlInfo
                "))
   rhelInfo=${remote_data[0]}
   perlInfo=${remote_data[1]}
   if [[ $? -eq 0 ]]
   then
     printf "| %-15s | %-15s | %-35s |n" "$target_host" "$rhelInfo" "$perlInfo"
   else
     printf "| %-15s | %-15s | %-35s |n" "$target_host" "?" "?"
fi
}  2>/dev/null
export -f remote_connect
< CVE-2011-2767-hostsList.txt  xargs -P15 -n1 -d'n' bash -c 'remote_connect "$@"' --
printf "|$marker|n"

结果:

|---------------------------------------------------------------|
|Hostname    | RedHat Vesrion | Perl Version                    |
|---------------------------------------------------------------|
|fsx1241     | 6.9            | mod_perl-2.0.4-12.el6_10.x86_64 | 
|fsx1242     | 6.9            | mod_perl-2.0.4-12.el6_10.x86_64 |
|fsx1243     | 6.9            |                                 |
|fsx1244     |                |                                 |
|fsx1245     |                |                                 |
|---------------------------------------------------------------|

您应该通过使用默认值来查看Bash的PARAMETER Expansion。例如,在bash wiki页面中提供一个示例,用于下面的示例..

${PARAMETER:-WORD}

${PARAMETER-WORD}

其中,如果参数PARAMETER为unset(从未定义)或null(空),则扩展为WORD,否则扩展为PARAMETER的值,就好像它只是${PARAMETER}。如果省略:(冒号),如第二种形式所示,则仅在参数为时使用默认值,而不使用

看看你的代码,考虑到上面的问题,你的下面一行代码只需要稍微修改一下,就可以了。

   if [[ $? -eq 0 ]];then
       printf "| %-15s | %-15s | %-35s |n" "$target_host" "$rhelInfo" "$perlInfo"
   else
       printf "| %-15s | %-15s | %-35s |n" "$target_host" "${rhelInfo:-?}" "${perlInfo:-?}"
   fi

您将得到如下所示:

|---------------------------------------------------------------|
|Hostname    | RedHat Vesrion | Perl Version                    |
|---------------------------------------------------------------|
|fsx1241     | 6.9            | mod_perl-2.0.4-12.el6_10.x86_64 | 
|fsx1242     | 6.9            | mod_perl-2.0.4-12.el6_10.x86_64 |
|fsx1243     | 6.9            |                                 |
|fsx1244     | ?              | ?                               |
|fsx1245     | ?              | ?                               |
|---------------------------------------------------------------|

希望对大家有帮助。

相关内容

  • 没有找到相关文章

最新更新