如何在缺失的列中放置一些值,正如你们看到的,下面的代码正在工作,但在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 | ? | ? |
|---------------------------------------------------------------|
希望对大家有帮助。