我正在使用bash脚本,我试图在内部拆分一个带有url的字符串,例如:
str=firsturl.com/123416 secondurl.com/634214
所以这些URL由空格分隔,我已经使用IFS命令拆分字符串,它工作得很好,我可以通过以下两个URL迭代:
for url in $str; do
#some stuff
done
但我的问题是我需要得到这个拆分有多少项,所以对于str示例它应该返回2,但使用这个:
${#str[@]}
返回字符串的长度(当前示例为40),我的意思是字符数,当我需要得到2时.
使用计数器进行迭代也不起作用,因为在迭代数组之前我需要元素的数量.
有什么建议?
最佳答案
将字符串拆分为数组并使用它:
str="firsturl.com/123416 secondurl.com/634214"
array=( $str )
echo "Number of elements: ${#array[@]}"
for item in "${array[@]}"
do
echo "$item"
done
但是,您永远不应该有空格分隔的字符串列表.如果你从其他命令逐行获取它们,你可以使用while循环:
while IFS='' read -r url
do
array+=( "$url" )
done
对于正确编码的URL,这可能不会有太大的区别,但一般来说,这将阻止glob扩展和一些空白问题,而且这是其他命令(如wget -i)使用的规范格式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。