繁体   English   中英

bash:如何在命令中添加数组元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM