如何在bash中创建未知数量的or运算符?

如何在bash中创建未知数量的or运算符?,bash,Bash,因此,我需要在bash中循环两个数组,以找出两者之间的差异(因此,如果有一个数组的值为1、2、3,另一个数组的值为1、2、3、4,它将返回一个新数组的值为4)。为了做到这一点,我需要以某种方式1)找到数组的长度,2)生成一个if语句,该语句可以根据数组的长度添加or运算符。我该怎么做呢?你可以用like来做 #/bin/bash a=(1 2 3) b=(12345) c=($(comm-13这能回答你的问题吗?老实说,我说不出你想要什么,我只能猜测。试着列出一个不需要解释的步骤列表,这样任何人

因此,我需要在bash中循环两个数组,以找出两者之间的差异(因此,如果有一个数组的值为1、2、3,另一个数组的值为1、2、3、4,它将返回一个新数组的值为4)。为了做到这一点,我需要以某种方式1)找到数组的长度,2)生成一个if语句,该语句可以根据数组的长度添加or运算符。我该怎么做呢?

你可以用like来做

#/bin/bash
a=(1 2 3)
b=(12345)

c=($(comm-13这能回答你的问题吗?老实说,我说不出你想要什么,我只能猜测。试着列出一个不需要解释的步骤列表,这样任何人都可以执行它们而不必猜测你的意图。然后,为你的shell编写相应的代码。我知道这有很多问题要问,但你愿意解释吗这是一个命令接一个命令吗?我对bash不太熟悉,这看起来像是胡言乱语。在第一行中,我只是分配数组
a
b
c
也被设置为subshell命令产生的数组,我连接了两个参数来重定向
a
b
数组s到
comm
的stdin(而不是通常与
comm
一起使用的常规文件)。谢谢,这真的很有帮助。
#!/bin/bash

a=(1 2 3)

b=(1 2 3 4 5)

c=($(comm -13 <(printf "%s\n" "${a[@]}" | sort) <(printf "%s\n" "${b[@]}" | sort)))
# or 'readarray -t c <<< "$(comm -13 <(printf "%s\n" "${a[@]}" | sort) <(printf "%s\n" "${b[@]}" | sort))"'

echo "${c[@]}"