附加到数组
如何通过一系列字符串迭代并删除其值的一部分?(bash)
我的数组中填充了一个保存为字符串的站点列表,我想抓住它们在'.com.au'左侧的部分,并将它们保存到新数组中。字符串中也有几个没有以'.com.au'结尾的项目,我想完全忽略它们。
为了使阅读更容易,我删除了大部分代码,只留在我认为与问题相关的内容中:
#!/bin/bash
full_array(*); declare -p full_array
edited_array=()
for x in ${full_array[@]};
#If x ends with '.com.au'
#Remove '.com.au' from x
#Save output to edited_array
#Else
#Skip item
done
我是否必须使用正则表达式?如果是这样,有人在网上知道任何值得检查的好教程吗?
这应该有效:
for x in ${full_array[@]};do
[[ $x == *.com.au ]] && edited_array+=("${x%.com.au}")
done
if [[ $x == *.com.au ]]; then
edited_array+=( "${x%.com.au}" )
fi
在bash双括号内,==
操作员是模式匹配操作员。然后,只需使用shell参数扩展即可删除域并用+=