Не могу найти ошибку в Shell скрипте. BASH.

Компьютеры программирование Linux unix bash

cat wtf.sh
ls -l wtf.sh
#!/bin/sh
TIMEOUT=$1
USERS=$(for user in $@ ; do [[ $((++i)) < 3 ]] && continue ; echo $user ; done)

read -p "Vvedite soobshenie:" msg

while true ; do
for user in {${USERS[@]} ; do
who | grep $user | while read str ; do
set -- $str
echo "$msg" | write $1 $2 ;
done
done
echo -n .
read -t ${TIMEOUT} cmd ; [ "$cmd" == "quit" ] && break
done

Пишет что ошибка в 18 строке, но в чем ошибка я не пойму.

Примечание:
Я поменял на /bin/bash, но все равно выдает ошибку 18: Bad substitution
Ответы:
а 19 строка существует? Поставь перевод строки после done
Ничего такого мне не пишет:
ap@t60-14:~/2$ ./jgjgj 10
Vvedite soobshenie:lksjdfl sdlkjfldskjf sdlkjflkdsj
..^C
ap@t60-14:~/2$
Да, какой на хрен /bin/sh, /bin/bash, это же баш синтаксис. И в первой строке!
Друг. С помощью чего открываешь?
1. #!/bin/bash (должен быть в первой строке).
2. В терминале вводи
$bash filename
Но не
$sh filename
ошибку хотя бы выложи!
какая-то странная программа, первым аргументом требует таймаут для read, вторым - tty, а потом из этих же параметров формирует список пользователей...


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.