整数の配列が与えられると、特定の目標に合計される2つの数値のインデックスが返されます。
各入力に解決策があり、同じ要素を2回使用できないと仮定できます。
例: 与えられた数値 = [2, 7, 11, 15], 宛先 = 9,
nums[0] + nums[1] = 2 + 7 = 9 なので [0, 1] が返されます。
Bashでこれを試しましたが、構文エラーのため失敗しました。論理が正しいか、構文エラーがあるか教えてください。
#!/bin/bash
# Given an array of integers, return indices of the two numbers such
# that they add up to a specific target.
read T
nums=("2" "7" "11" "15")
for i in ${nums[@]}
do
for j in ${nums[@]}
do
if [ "$i" + "$j" == $T ]
echo "i=$i"
echo "j=$j"
break
fi
done
done
ベストアンサー1
if
対応する必要があり、算術テストには1がthen
必要です。(( . . .))
if (( $i + $j == $T )); then
またはそれ以来
式内では、シェル変数はパラメーター拡張構文を使用せずに名前で参照することもできます。
次のように単純化できます。
if (( i + j == T )); then
SHELL GRAMMAR - Compound Commands
サブセクションを参照してくださいman bash
。
$[ . . . ]
次の古い算術評価構文を表示できます。if [ $[$i + $j] == $T ]; then
また、合法的です。ただし、これは廃止され、新しいスクリプトには使用しないでください。