加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Shell脚本 – 将字符串拆分为数组时检查长度

发布时间:2020-12-13 13:47:56 所属栏目:Linux 来源:网络整理
导读:我正在使用bash脚本,我试图在内部拆分一个带有url的字符串,例如: str=firsturl.com/123416 secondurl.com/634214 所以这些URL由空格分隔,我已经使用IFS命令拆分字符串,它工作得很好,我可以通过以下两个URL迭代: for url in $str; do #some stuffdone 但我
我正在使用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)使用的规范格式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读