Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Скрипт для терминала bash

LowSeer Профи (932), на голосовании 2 недели назад
if [ $# -eq 0 ]; then
echo "usage: `basename $0` num" 1>&2
exit 1
fi
n=$1
words=()
for ((i = 0; i < n; i++)); do
read -p "enter word: " w
words[i]=$ { w%% * }
done
for ((i = 0; i < $ { #words[@] } ; i++)); do
echo "$((i + 1)): $ { words[i] } "
done
exit 0

Данный скрипт должен вводить заданные параметром числа слов и выводить каждого слово на печать, сопровождая его порядковым номером.
Что не так?
Голосование за лучший ответ
Алексей Стуров Мастер (1498) 1 месяц назад
Во-первых, если только начинаете, то сразу учитесь расставлять отступы - всегда будет легче читать скрипты, во-вторых, если это не майл глючит, то у Вас много лишних пробелов, в-третьих, последний цикл у Вас идет по количеству элементов массива, а значит там не [@], а [*]. :)
==============================
Более правильная реализация вывода массива:

for i in ${!words[*]}
do
echo $i': '${words[$i]}
done
Похожие вопросы