我正在尝试编写一个简单的脚本,列出两个列表中的内容.为简化起见,我们以ls为例.想象一下"一个"和"两个"是目录.
one=`ls one` two=`ls two` intersection $one $two
我在bash中仍然很绿,所以请随时纠正我这样做的方式.我只需要一些命令,打印出"one"和"two"中的所有文件.它们必须存在于两者中.你可以把它称为"一"和"两"之间的"交集".
是否有可能在bash中取两个数组的差异.
如果你可以建议我这样做的话会非常棒.
代码:
Array1=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )
Array2=( "key1" "key2" "key3" "key4" "key5" "key6" )
Array3 =diff(Array1, Array2)
Array3 ideally should be :
Array3=( "key7" "key8" "key9" "key10" )
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助.
我有一个
array1 = (20,30,40,50)
array2 = (10,20,30,80,100,110,40)
Run Code Online (Sandbox Code Playgroud)
我必须从数组 3 中的这 2 个数组中获取公共值,例如:
array3 = (20,30,40)
Run Code Online (Sandbox Code Playgroud)
按升序排列。
我找到了这个很酷的Bash函数,用于检查数组是否包含一个元素:
CONTAINS_ELEMENT(){
local e
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
return 1
}
Run Code Online (Sandbox Code Playgroud)
以下是它的用法示例:
if CONTAINS_ELEMENT $element "${array[@]}"; then
...
fi
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法重写这个函数,以便它可以检查数组中的任何值是否等于其他数组的任何值,而不只是检查一个单独的值,因为它正确吗?