js拖拽元素到另一个元素_如何从shell数组中删除一个元素

6ccd50f84d6f920fdbb1e3c661367621.png点击蓝字关注我们吧!根据下标删除

从一个数组中删除第二个元素。代码如下:

#!/bin/basharray1=(a b c d a b c d)unset array1[1]echo ${array1[*]}

输出结果:

a c d a b c d
根据元素删除

在有些情况下,我们想删除数组中指定元素,比如删除上述数组中的`b`。代码如下:

#!/bin/basharray1=(a b c d a b c d)array1=( ${array1[*]/b} ) #将*换成 @, 结果一致echo ${array1[*]}

结果如下:

a c d a c d
1 将${array1[*]/b} 换成"${array1[*]/b}"

为了更好的测试,加入一个循环,对移除b之后的数组进行循环输出。

代码如下:

#!/bin/basharray1=(a b c d a b c d)array1=( "${array1[*]/b}" )echo ${array1[*]}for value in ${array1[@]} #将@换成*,结果一致do  echo $valuedone

结果如下:

a c d a c dacdacd

将上述代码中的for循环修改成 for value in "${array1[@]}"

代码如下:

#!/bin/basharray1=(a b c d a b c d)array1=( "${array1[*]/b}" )echo ${array1[*]}for value in "${array1[@]}" #将@换成*,结果一致do  echo $valuedone

结果如下:

a c d a c da c d a c d
2 将${array1[*]/b} 换成 "${array1[@]/b}"

代码如下:

#!/bin/basharray1=(a b c d a b c d)array1=( "${array1[@]/b}" )echo ${array1[*]}for value in ${array1[@]} #将@换成*,结果一致do  echo $valuedone

结果如下:

a c d a c dacdacd

将上述代码中的for循环修改成 for value in "${array1[@]}"

代码如下:

#!/bin/basharray1=(a b c d a b c d)array1=( "${array1[@]/b}" )echo ${array1[*]}for value in "${array1[@]}"do  echo $valuedone

结果如下:

a c d a c dacdacd

将上述代码中的for循环修改成 for value in "${array1[*]}"

代码如下:

#!/bin/basharray1=(a b c d a b c d)array1=( "${array1[@]/b}" )echo ${array1[*]}for value in "${array1[*]}"do  echo $valuedone

结果如下:

a c d a c da c d a c d

删除包含某个字符的元素

代码如下:

#!/bin/basharray1=(abc bcd cdf dfg)array1=( "${array1[@]/*b*}" )echo ${array1[*]}

结果如下:

cdf dfg

这个方案和上面的方案,本质上就是截取字符串。

* 和 @ 的区别

关于两者的区别,直接引用文档(https://www.gnu.org/software/bash/manual/html_node/Arrays.html) 会更加直接: 

These subscripts differ only when the word appears within double-quotes. If the word is double-quoted, ${name[*]} expands to a single word with the value of each array member separated by the first character of the IFS variable, and ${name[@]} expands each element of name to a separate word.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值