我确实有一个有趣的问题,我正在尝试解决,但我仍然无法这样做。
假设我有 2 个数组。
数组一:
1 -2 3 -2 2 -4
Run Code Online (Sandbox Code Playgroud)
数组二:
-2 -3 4 5 2 -5
Run Code Online (Sandbox Code Playgroud)
我希望能够实际比较两者Array one和的第 i 个值Array two:
Array Three 012输出:
2 0 1 2 1 0
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点 ?
如果您熟悉 C、C++ 或 Java,那么您会发现bash's for-loop 的这个变体也非常熟悉。 bash进行算术评估,(( ... ))因此我们将在比较值时使用它:
array1=( 1 -2 3 -2 2 -4 )
array2=( -2 -3 4 5 2 -5 )
array3=( )
for (( i=0; i < ${#array1[@]}; ++i )); do
if (( array1[i] < 0 && array2[i] < 0 )); then
array3[$i]=0
elif (( array1[i] > 0 && array2[i] > 0 )); then
array3[$i]=1
else
array3[$i]=2
fi
done
echo "${array3[@]}"
Run Code Online (Sandbox Code Playgroud)
这也适用于ksh93外壳,从中bash获得了许多功能。