如何遍历字符串数组,并删除部分值? (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
我是否必须使用正则表达式来执行此操作?如果是这样,有没有人知道任何在线的好教程值得一试?
答案 0 :(得分:2)
这应该有效:
for x in ${full_array[@]};do
[[ $x == *.com.au ]] && edited_array+=("${x%.com.au}")
done
答案 1 :(得分:1)
if [[ $x == *.com.au ]]; then
edited_array+=( "${x%.com.au}" )
fi
在bash双括号内,==
运算符是模式匹配运算符。然后,只需使用shell参数扩展来删除域并使用+=