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

时间:2019-12-29 08:35:29

标签: bash shell

我有以下循环:

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

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

1 个答案:

答案 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语句以仅在第一次运行时(基于键或新变量)有条件地调用它