Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: не выполняется цикл  (Прочитано 1683 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Wogel

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
не выполняется цикл
« : 27 Сентября 2022, 21:27:07 »
Подскажите пожалуйста, что делаю не так
sudo for u in {user1,user2,user3}; do usermod -aG G1,G2,G3 $u;
-bash: syntax error near unexpected token 'do'


linux version 5.4.0-126-generic

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7233
  • Luck Tales
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #1 : 27 Сентября 2022, 21:35:50 »
А цикл закрывать Пушкин будет?  :)
И sudo не там.

for u in {user1,user2,user3}; do sudo usermod -aG G1,G2,G3 $u; done
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3127
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #2 : 27 Сентября 2022, 21:36:33 »
Хотя бы скобки не такие. Посмотрите внимательнее "man bash" и пишите буквально так, как там в образце.
Пётр.

Оффлайн Wogel

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #3 : 28 Сентября 2022, 08:55:08 »
А цикл закрывать Пушкин будет?  :)
И sudo не там.

for u in {user1,user2,user3}; do sudo usermod -aG G1,G2,G3 $u; done
спасибо за подсказку, сработало, только вот про закрытие цикла я все равно ничего не понял, если правильно понимаю команда done в конце строки цикл закрывает.

Пользователь добавил сообщение 28 Сентября 2022, 08:56:40:
Хотя бы скобки не такие. Посмотрите внимательнее "man bash" и пишите буквально так, как там в образце.
если бы все так просто было для меня, только в man и смотрел, для меня это как китайская азбука, мало того, что на английском, так еще и ничего не понятно  :'( дело в том, что даже на русском посмотрел справку и почти ничего не понял, как вы всё это понимаете, ума не приложу.
« Последнее редактирование: 28 Сентября 2022, 09:32:38 от Wogel »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7370
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #4 : 28 Сентября 2022, 09:45:12 »
Не сразу Москва строилась. Поэтому, пишу скрипты, поглядывая одним глазом в ABS. По циклам уже давал ссылку, видно не дочитал.
По скобкам.

Оффлайн Wogel

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #5 : 28 Сентября 2022, 09:57:40 »
Не сразу Москва строилась. Поэтому, пишу скрипты, поглядывая одним глазом в ABS. По циклам уже давал ссылку, видно не дочитал.
По скобкам.
спасибо! и в избранное заносил сайт по ссылке, и открыт он у меня уже был однако, всё чего-то надо, прошу прощения.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7370
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #6 : 28 Сентября 2022, 15:27:57 »
Wogel, вот такой пример получился для тебя и для Peter_I:
avn@hi10:~$ for u in user1 user2 user3; do echo "$u"; done
user1
user2
user3
avn@hi10:~$ for u in {user1,user2,user3}; do echo "$u"; done
user1
user2
user3
avn@hi10:~$ for u in user{1,2,3}; do echo "$u"; done
user1
user2
user3
Т.е., можно разными способами получить одинаковый результат.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7233
  • Luck Tales
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #7 : 28 Сентября 2022, 16:50:15 »
команда done в конце строки цикл закрывает.
Верно!
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Wogel

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #8 : 28 Сентября 2022, 19:04:44 »
Wogel, вот такой пример получился для тебя и для Peter_I:
avn@hi10:~$ for u in user1 user2 user3; do echo "$u"; done
user1
user2
user3
avn@hi10:~$ for u in {user1,user2,user3}; do echo "$u"; done
user1
user2
user3
avn@hi10:~$ for u in user{1,2,3}; do echo "$u"; done
user1
user2
user3
Т.е., можно разными способами получить одинаковый результат.
удивительно, что нет единого синтаксиса, то так, то этак, даже "$u" взято в кавычки, хотя и без них прокатит.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7233
  • Luck Tales
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #9 : 28 Сентября 2022, 19:50:18 »
нет единого синтаксиса, то так, то этак, даже "$u" взято в кавычки, хотя и без них прокатит.
У "for" синтаксис один.
for VAR in arg(s); do COMMAND; doneаргументы можно передать через пробел, либо через раскрытие фигурных скобок интерпретатором.

И не надо недооценивать магию кавычек! Попробуйте в терминале:
STAR=*
echo $STAR
echo "$STAR"

Вот еще хорошая статья по работе в bash
« Последнее редактирование: 28 Сентября 2022, 19:52:20 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7370
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #10 : 29 Сентября 2022, 04:42:49 »
Мы говорим: "малако", и все понятно. Но правильно: "молоко".

Цитировать
нет единого синтаксиса, то так, то этак
В моем примере, собственно последняя часть и показывает назначение фигурных скобок. Это не часть синтаксиса цикла.

Цитировать
даже "$u" взято в кавычки, хотя и без них прокатит
В данном случае прокатит, но еще лучше: "${u}". Хотя-бы иногда для наглядности, например:
$u12   # Что это, переменная "u12"?
${u}12 # Ясно видно, что переменная "u".

Оффлайн jurganov

  • Старожил
  • *
  • Сообщений: 1722
    • Просмотр профиля
Re: не выполняется цикл
« Ответ #11 : 29 Сентября 2022, 05:37:51 »
Мы говорим: "малако", и все понятно. Но правильно: "молоко".
правильно говорить "малако", . Основа любого языка - язык разговорный, устная речь
а письменное - это протез. у письменности - свои законы, помогающие передать на бумаге устную речь тяжеловесными грамматическими формами.
Умелые писатели пишут разговорной речью, пользуясь понимание носителями языка конектста. Это куда изящнее, чем излишние формы

 

Страница сгенерирована за 0.03 секунд. Запросов: 25.