我有以下循环:
for k in "${keys[@]}"; do
if output=$(curl -s -f \
--max-time 5 \
"https://api.site/info?key=$k"); then
printf "\n\n%s\n$(json_pp<<<"$output")\n\n" "$k"
fi
done
我只想在循环开始时打印一次echo命令。
很明显,此选项将多次打印“信息端点”行,而不是一行:
for k in "${keys[@]}"; do
echo 'info endpoint:'
if output=$(curl -s -f \
--max-time 5 \
"https://api.site/info?key=$k"); then
printf "\n\n%s\n$(json_pp<<<"$output")\n\n" "$k"
fi
done
请给我正确的方向,谢谢。
答案 0 :(得分:0)
只需将其放在循环之外:
echo 'info endpoint:'
for k in "${keys[@]}"; do
if output=$(curl -s -f \
--max-time 5 \
"https://api.site/info?key=$k"); then
printf "\n\n%s\n$(json_pp<<<"$output")\n\n" "$k"
fi
done
如果它在内部很重要,则可以添加一个if语句以仅在第一次运行时(基于键或新变量)有条件地调用它