Вместо использования ^
используйте функцию «pow», которая является предопределенной функцией, которая выполняет операцию Power, и ее можно использовать, включив заголовочный файл math.h
.
^
Этот символ выполняет операцию BIT-WISE XOR в C, C ++.
Замените a^i
на pow(a,i)
.
Вам нужен цикл над массивом & amp; array2
i=0
while [ $i -lt ${#array[*]} ]; do
echo ${array[$i]} is in ${array2[$i]}
i=$(( $i + 1));
done
Vietnam is in Asia
Germany is in Europe
Argentina is in America
В качестве альтернативы вы можете использовать эту опцию (без цикла):
paste <(tr ' ' '\n' <<< ${array[*]}) <(tr ' ' '\n' <<< ${array2[*]}) | sed 's/\t/ is in /'
Если все массивы упорядочены правильно, просто обходите индекс.
array=(
Vietnam
Germany
Argentina
)
array2=(
Asia
Europe
America
)
for index in ${!array[*]}; do
echo "${array[$index]} is in ${array2[$index]}"
done
Vietnam is in Asia
Germany is in Europe
Argentina is in America
Из ответа anishsane и комментариев в нем мы теперь знаем, чего вы хотите. Вот то же самое в стиле bashier , используя цикл for. См. Раздел Looping Constructs в справочном руководстве . Я также использую printf
вместо echo
.
#!/bin/bash
array=( "Vietnam" "Germany" "Argentina" )
array2=( "Asia" "Europe" "America" )
for ((i=0;i<${#array[@]};++i)); do
printf "%s is in %s\n" "${array[i]}" "${array2[i]}"
done
Еще одна возможность - использовать ассоциативный массив:
#!/bin/bash
declare -A continent
continent[Vietnam]=Asia
continent[Germany]=Europe
continent[Argentina]=America
for c in "${!continent[@]}"; do
printf "%s is in %s\n" "$c" "${continent[$c]}"
done
В зависимости от того, что вы хотите сделайте, вы могли бы также рассмотреть эту вторую возможность. Но обратите внимание, что вам нелегко будет контролировать порядок, когда поля отображаются во второй возможности (ну, это ассоциативный массив, так что это не удивительно).