저는 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