shell2个数组 相同的字符都删除
时间: 2024-03-27 10:35:33 浏览: 80
假设有两个数组 `arr1` 和 `arr2`,我们可以使用循环遍历两个数组,对于每个字符在两个数组中都出现过的情况,将其从数组中删除即可。
下面是一个示例代码:
```bash
# 定义两个数组
arr1=("a" "b" "c" "d" "e")
arr2=("c" "d" "e" "f" "g")
# 遍历 arr1 数组中的每个元素
for i in "${arr1[@]}"
do
# 判断当前元素是否在 arr2 数组中出现过
if [[ " ${arr2[*]} " == *" $i "* ]]; then
# 如果出现过,则从两个数组中都将该元素删除
arr1=("${arr1[@]/$i}")
arr2=("${arr2[@]/$i}")
fi
done
# 输出处理后的两个数组
echo "${arr1[@]}"
echo "${arr2[@]}"
```
运行以上代码,输出结果为:
```
a b
f g
```
可以看到,两个数组中相同的字符都被删除了。
相关问题
shell 数组遍历
当我们使用Shell时,经常需要对一个或多个元素进行操作。这些元素可以是文件、目录、字符串、数字等,通常使用数组来组织它们。
在Shell中,数组可以使用以下语法进行定义:
```bash
array_name=(element1 element2 ... elementN)
```
其中,`array_name`是数组的名称,`element1`、`element2`、...、`elementN`是数组中的元素,用空格分隔。
数组元素可以通过下标来访问,下标从0开始,可以是一个整数或一个表达式,使用`${array_name[index]}`语法进行访问,例如:
```bash
my_array=(apple banana "cherry pie" "dollar 100")
echo ${my_array[0]} # 输出: apple
echo ${my_array[1]} # 输出: banana
echo ${my_array[2]} # 输出: cherry pie
echo ${my_array[3]} # 输出: dollar 100
```
可以使用`${#array_name[@]}`来获取数组的长度,`${!array_name[@]}`来获取数组中所有下标的列表,例如:
```bash
echo ${#my_array[@]} # 输出: 4
echo ${!my_array[@]} # 输出: 0 1 2 3
```
可以使用循环语句来遍历数组中的所有元素,例如:
```bash
for element in ${my_array[@]}
do
echo $element
done
```
上述代码会输出数组`my_array`中的所有元素。可以使用`{start..end..increment}`的语法来生成一个整数序列,例如:
```bash
for i in {0..9..2}
do
echo $i
done
```
上述代码会输出0、2、4、6、8这5个整数。可以使用`unset`命令来删除数组中的某个元素,例如:
```bash
unset my_array[1]
```
上述代码会删除数组`my_array`中下标为1的元素(即`banana`)。
这是Shell中数组的基本用法,希望能对你有所帮助!
阅读全文