私は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