Azure CLI bash 루프가 작동하지 않습니다.

Azure CLI bash 루프가 작동하지 않습니다.

저는 bash를 배우고 PowerShell에 대한 의존도를 줄이려고 노력하고 있지만 겉으로는 단순해 보이는 루프와 관련된 문제에 직면하고 있습니다.

다음은 루프가 각 가상 머신 결과와 관련 이름, ID 및 레이블을 반환하도록 시도한 것입니다.

어떤 도움이라도 대단히 감사하겠습니다.

#Get a list of VMs with their name, id, and tags from Azure 
r=$(az vm list -g lab.rg1 --query "[].{name:name, id:id, tags:tags}") #--output tsv)

#take that list and do something. Currently just trying to echo each VM with it's name,id, and tags.
while read r
do
    echo $r
done

echo All Done

답변1

while read variable구조는 읽히지 않습니다~에서 variable, 입력을 반복하고 각 레코드를 저장합니다.~처럼 variable. 그래서 당신은 이것을 할 수 있습니다 :

command | while read r; do something with "$r"; done

아니면 이거:

while read r; do something with "$r"; done < file

$r귀하의 경우에는 변수가 전혀 필요하지 않습니다. 다음을 시도하십시오.

az vm list -g lab.rg1 --query "[].{name:name, id:id, tags:tags}" |
  while read r
  do
     echo "$r"
  done
echo All Done

반드시 변수를 사용해야 하는 경우 $r다음을 수행할 수 있습니다.

r=$(az vm list -g lab.rg1 --query "[].{name:name, id:id, tags:tags}")

## print the value of the variable and pass that to the loop
printf '%s\n' "$r" |
  while read line
  do
     echo "$line"
  done
echo All Done

관련 정보