我需要一个Ansible主机文件中的条目,以一种方式格式化,以便它可以在Linux上的普通主机文件中使用。我可以通过在我的脚本中调用两次nslookup来实现这一点。
我的目标是只调用nslookup一次,但我不知道如何将if语句中的nslookup输出转换为变量。
我已经试过了
if [[ $(nslookup $i > $DNSHOST) && $? == 0 ]]
if [[ $(nslookup $i > $DNSHOST && $? == 0) ]]
if (($(nslookup $i > $DNSHOST) && $? == 0))
if [[ $("nslookup $i > $DNSHOST") && $? == 0 ]]...and有很多其他的组合,但都不起作用??
此脚本工作并完成以下工作:
for i in $HOSTS; do
if [[ $(nslookup $i) && $? == 0 ]]; then
nslookup $i | sed -e '1,3d;6d' | cut -d$'\t' -f2 | cut -d ' ' -f2 | xargs -n2 | awk '{print $2,"\t",$1}'
fi
done这是我不能去工作的那个:
for i in $HOSTS; do
if [[ $(nslookup $i > $DNSHOST) && $? == 0 ]]; then
cat $DNSHOST | sed -e '1,3d;6d' | cut -d$'\t' -f2 | cut -d ' ' -f2 | xargs -n2 | awk '{print $2,"\t\t",$1}'
fi
done当我使用双引号时,我得到错误‘目录不存在’。否则,它只是循环遍历主机列表,而不使用nslookup。
发布于 2019-07-08 18:52:23
不是很确定,你想要什么。
但这看起来很奇怪:
if [[ $(nslookup $i > $DNSHOST) && $? == 0 ]]相反,尝试:
if nslookup $i > $DNSHOST发布于 2019-07-08 23:02:26
如果您想要捕获nslookup输出,您仍然可以在If命令的条件部分执行此操作:
if output=$( nslookup ... ); then
# do something with "$output"
fiif [[ $(nslookup $i > $DNSHOST) && $? == 0 ]]的问题
表达式有两个: false和$? == 0
&& -
$(nslookup $i > $dnshost),则布尔结果不可能为true,并且第二个表达式不是第一个表达式:
请注意,if命令的条件不必在方括号中。如果您想要编写一个If命令来处理某个命令的退出状态,那么只需编写
if some_command; then ...; else ...; fi
在交互式提示符下:help if、help [[、help test
https://stackoverflow.com/questions/56933246
复制相似问题