我在需要读取的文件中获取了值并将其添加到命令中。这是我失败的解决方案...
for arrayValue in "${fileArray[@]}"
do
curl -s --user "${arrayValue[0]}:${arrayValue[1]}" "https://dyndns.loopia.se?hostname=$arrayValue
done
文件如下:
username
password
domain
domain
...
从文件读取没问题,问题在于如何将它们添加到curl命令中。
答案 0 :(得分:4)
如果您的数组在前两个元素中包含用户名和密码,并且您希望避免循环访问它们,请尝试
for arrayValue in "${fileArray[@]:2}"
do
curl -s --user "${fileArray[0]}:${fileArray[1]}" "https://dyndns.loopia.se?hostname=$arrayValue"
done
请注意arrayValue
是如何引用fileArray
中的当前元素的。它不是数组,因此您对${arrayValue[0]}
和${arrayValue[1]}
的引用无效。
还要注意我们如何循环使用后缀:2
从第三个数组元素开始。 (数组索引从零开始,因此索引2
指向第三个元素。)
答案 1 :(得分:0)
假设主机名中没有空白字符(空格,CR ...),则还可以使用for
摆脱printf
循环:
printf -v url "https://dyndns.loopia.se?hostname=${fileArray[@]:2}"
请注意:2
将获得除前两个元素之外的所有数组元素。
由于curl
接受多个URL,因此可以轻松使用:
curl -s --user "${fileArray[0]}:${fileArray[1]}" $url