[英]bash: How to add array elements to command?
我在需要读取的文件中获取了值并将其添加到命令中。 这是我失败的解决方案...
for arrayValue in "${fileArray[@]}"
do
curl -s --user "${arrayValue[0]}:${arrayValue[1]}" "https://dyndns.loopia.se?hostname=$arrayValue
done
该文件是这样的:
username
password
domain
domain
...
从文件读取是没有问题的,问题在于如何将它们添加到curl命令中。
如果您的数组在前两个元素中包含用户名和密码,并且您希望避免循环访问这些用户名和密码,请尝试
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
开始的数组元素。 (数组索引是从零开始的,因此索引2
指向第三个元素。)
假设主机名中没有空白字符(空格,CR ...),则还可以使用printf
摆脱for
循环:
printf -v url "https://dyndns.loopia.se?hostname=${fileArray[@]:2}"
注意:2
会获得除前两个元素之外的所有数组元素。
由于curl
接受多个URL,因此可以简单地使用:
curl -s --user "${fileArray[0]}:${fileArray[1]}" $url
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.