Рейтинг:0

Скрипт запускает эхо нормально, но ничего не печатает для зацикленного эха

флаг cn

Я пытаюсь написать скрипт, который открывает терминал и повторяет в нем эхо. У меня есть следующее.

#!/usr/bin/bash

gnome-terminal -- /bin/bash -c "для i в 1 2 3; выполнить эхо $i; выполнено; выполнить bash"

Когда я запускаю этот скрипт, он показывает три пустые строки, а затем выполняет bash. Однако, если я бегу для я в 1 2 3; эхо $i; сделано; исполнительный удар в терминале нормально печатает. Кроме того, если я напишу следующее, он тоже нормально напечатает привет. Поэтому я считаю, что это проблема с циклом for.

#!/usr/bin/bash

gnome-терминал -- /bin/bash -c "эхо привет"

Я не мог найти никого с похожей проблемой.

флаг cn
Ray
Почему у вас в конце стоит `exec bash`? Я не уверен, хотите ли вы запустить цикл в bash, а затем запустить другую оболочку bash... Действительно, что-то не так с вашим кодом, но я не могу понять это... Вы получаете 3 пустые строки, потому что это значение `$i`. Если, скажем, вы поставите `i=10`, а затем запустите цикл, я думаю, вы получите три `10`.
bac0n avatar
флаг cn
вам нужны одинарные кавычки, иначе `$i` будет оцениваться, поэтому ... пустые строки
matticebox avatar
флаг cn
@Ray У меня есть `exec bash` в конце, поэтому я могу посмотреть на терминал после того, как он зациклит эхо. Раньше я использовал сон, но решил, что запустить другую оболочку bash будет проще. Я нуб и не совсем понимаю, что вы подразумеваете под `i=10`, но если я поставлю `10` вместо `$i`, он действительно напечатает `10` три раза. Для меня это просто не имеет смысла, потому что когда я запускаю код с `$i` в терминале, он печатает `1`, затем `2`, а затем `3`. Например, `для приветствия; эхо $i; done` напечатает hello в терминале.
matticebox avatar
флаг cn
@ bac0n Я пробовал `gnome-terminal -- /bin/bash -c "для i in 1 2 3; do echo '$i'; done; exec bash"`, и он все еще показывает пустые строки, если только я не замечаю что-то еще я сделал не так.
bac0n avatar
флаг cn
нет, `/bin/bash -c 'для i in 1 2 3; эхо $i; сделано; исполнительный удар'`
matticebox avatar
флаг cn
@ bac0n Это сработало, спасибо. Но я не понимаю, что именно происходит... Я думал, что использование двойных и одинарных кавычек было просто для того, чтобы вы могли иметь одно внутри другого.
Artur Meinild avatar
флаг vn
[См. здесь] (https://stackoverflow.com/questions/6697753/difference-between-single-and-double-quotes-in-bash).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.