mapfile命令给我语法问题

时间:2019-06-19 17:23:25

标签: linux shell unix scripting

尝试比较两个数组并打印差异,并获得错误。

1.sh: line 9: syntax error near unexpected token `<'
1.sh: line 9: ` mapfile -t $1 < <(comm -23 <(echo "${a[*]}" | sort) <(echo "${b[*]}" | sort))'

如果我在命令提示符下运行,它将正常工作并正确给出结果。当我在1.sh中复制相同代码时会抛出错误

下面是代码

a=(1 2 3 4 5 6 7 9 10 11 12)
b=(2 3 4 7 8 9 12)
function array_diff 
{
eval local a=\(\"\${$2[@]}\"\)
eval local b=\(\"\${$3[@]}\"\)
local IFS=$'\n'
mapfile -t $1 < <(comm -23 <(echo "${a[*]}" | sort) <(echo "${b[*]}" | sort))
}
array_diff RESULT a b
echo "${RESULT[@]}"

输出应为:1 10 11 5 6

0 个答案:

没有答案