#!/bin/bash
vm1_MAC=`virsh -c qemu:///system domiflist instance-00000009 -e | grep virbr0 | awk '{print $5}'`
vm2_MAC=`virsh -c qemu:///system domiflist instance-0000000d -e | grep -i virbr0 | awk -e '{print $5}'`
vm1_IP=`arp -e | grep $vm1_MAC | awk '{print $1}'`
vm2_IP=`arp -e | grep $vm2_MAC | awk '{print $1}'`
echo "VM1 IP Address: $vm1_IP"
echo "VM2 IP Address: $vm2_IP"
shell脚本旨在显示我的两个openstack实例的IP地址,但是我收到grep命令选项错误: 用法:grep [OPTION] ... PATTERN [FILE] ...
请尝试使用“ grep --help”以获取更多信息。
用法:grep [选项] ...模式[文件] ...
请尝试使用“ grep --help”以获取更多信息。
VM1 IP地址:
VM2 IP地址:
这里有没有人可以帮助我,因为我不是bash脚本专家,只需要这样做就可以完成一些任务。谢谢
答案 0 :(得分:1)
当您尝试grep
输入以破折号开头的字符串时,通常会出现此消息。
直接的解决方法是使用grep -e "$variable"
,但实际上,您想在此处避免使用useless use of grep
。
#!/bin/bash
vm1_MAC=$(virsh -c qemu:///system domiflist instance-00000009 -e | awk "/virbr0/"'{print $5}')
vm2_MAC=$(virsh -c qemu:///system domiflist instance-0000000d -e | awk -e 'tolower($0) ~ /vibr0/ {print $5}')
vm1_IP=$(arp -e | awk -v mac="$vm1_MAC" '$0 ~ mac {print $1}')
vm2_IP=$(arp -e | awk -v mac="$vm2_MAC" '$0 ~ mac {print $1}')
顺便说一句,这也演示了将正则表达式传递给Awk的三种不同方法。还请注意,相对于恐龙$(command)
语法,我们更喜欢现代`backtick`
替代。