循环启动时仅打印一次 echo 命令



我有以下循环:

for k in "${keys[@]}"; do
if output=$(curl -s -f 
--max-time 5 
"https://api.site/info?key=$k"); then
printf "nn%sn$(json_pp<<<"$output")nn" "$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 "nn%sn$(json_pp<<<"$output")nn" "$k"
fi
done

请给我正确的方向,谢谢。

简单地把它放在循环之外:

echo 'info endpoint:'
for k in "${keys[@]}"; do
if output=$(curl -s -f 
--max-time 5 
"https://api.site/info?key=$k"); then
printf "nn%sn$(json_pp<<<"$output")nn" "$k"
fi
done

如果它位于内部对您很重要,则可以添加一个 if 语句以仅在第一次运行时有条件地调用它(基于键或新变量(

最新更新