我发现了不少帖子,但无法将这些内容整理在一起以解决我的问题。所以说我有两个阵列:
array1=( adir bdir anicedir )
array2=( adir anice )
我想有第三个这样的数组
array3=( adir anicedir )
更具体地说,如果array2
中第i个元素的前5个字符与array1
中任何元素的前5个字符匹配,则将array2[i]
替换为array1[i]
< / p>
答案 0 :(得分:2)
没有什么特别短的,因为bash
不是数据处理语言。你需要使用循环。
array1=( adir bdir anicedir )
array2=( adir anice )
array3=()
for val2 in "${array2[@]}"; do
for val1 in "${array1[@]}"; do
if [[ ${val1:0:5} == "${val2:0:5}" ]]; then
array3+=("$val1")
break
fi
done
done
引用==
的右侧确保执行文字字符串比较,而不是模式匹配。