在shell脚本中读取文件



我想在shell脚本中读取一个文件,比较给定的用户数据

交货:

文件:vm_list.txt包含以下数据

vm1,vm2,vm3

用户作为参数vm2,vm4

首先,它将读取vm_list.txt文件并比较用户给定的参数vm2,vm4。如果是有效的虚拟机,则输出为有效的,否则此虚拟机不存在或给出错误的虚拟机名称。

我尝试了下面的逻辑,但我不能达到正确的结果。

代码:

for vm_name in "${vm_names[@]}"
do
VM_LIST_FILE="/tmp/$AZ_ACCOUNT.vm.list"
az vm list --output table > "$VM_LIST_FILE"
vm_rg_name=$(grep $vm_name "${VM_LIST_FILE}" |
awk '{ print $2 }' | tr '[:upper:]' '[:lower:]')
if cat $VM_LIST_FILE | grep '$vm_name'; then
echo "This vm $vm_name is Present on $vm_rg_name"
else
echo "This vm $vm_name is not present or invalid vm Name"
fi
done

一个问题是

的单引号
cat $VM_LIST_FILE | grep '$vm_name'

不能代替$vm_name。你需要使用双引号:

grep "$vm_name" $VM_LIST_FILE

在路上救一只没用的猫。

除此之外,grep|awk是一个反模式,因为awk可以执行grepping;awk '/pattern/ { action }'是应该使用的。

相关内容

  • 没有找到相关文章

最新更新