gpt4 book ai didi

linux - 用于从文件创建数组并在 curl URL 上使用每个值的 Bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:20 25 4
gpt4 key购买 nike

我正在编写一个 bash 脚本,我得到了一个 IP 列表,我想在 CURL 命令中一个一个地添加这些 IP。例如在名为 list.txt 的文件中给定列表

8.8.8.8
10.10.10.10
136.34.24.22
192.168.10.32

我想在 curl 命令上添加每个值

curl -k -u $user:$password "https://logservice/jobs" --data-urlencode 'search=search index=test $ARRAYVALUE | head 1' > output.txt

其中 $ARRAYVALUE 是要在命令中使用的 IP 地址。

我会很感激任何提示。

谢谢

最佳答案

如果我没理解错的话,你想:

  • 将“list.txt”的每一行映射到数组的一项
  • 遍历新创建的数组,将项目一个一个地插入到您的命令调用中

考虑一下这个被大量评论的片段。特别注意 mapfile 以及如何在 curl 调用中使用变量,用 引号括起来。

#!/bin/bash
# declare a (non-associative) array
# each item is indexed numerically, starting from 0
declare -a ips
#put proper values here
user="userName"
password="password"
# put file into array, one line per array item
mapfile -t ips < list.txt

# counter used to access items with given index in an array
ii=0
# ${#ips[@]} returns array length
# -lt makes "less than" check
# while loops as long as condition is true
while [ ${ii} -lt ${#ips[@]} ] ; do
# ${ips[$ii]} accesses array item with the given (${ii}) index
# be sure to use __double__ quotes around variable, otherwise it will not be expanded (value will not be inserted) but treated as a string
curl -k -u $user:$password "https://logservice/jobs" --data-urlencode "search=search index=test ${ips[$ii]} | head -1" > output.txt
# increase counter to avoid infinite loop
# and access the next item in an array
((ii++))
done

您可以在 GNU Bash reference: Built-ins 中阅读有关 mapfile 的信息.

您可以在 GNU Bash reference: Arrays 中阅读有关创建和访问数组的内容

检查这个great post关于 bash 中的引号。

希望这个答案对您有所帮助。

关于linux - 用于从文件创建数组并在 curl URL 上使用每个值的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com