Запускать несколько скриптовых сеансов экрана из другого скрипта - PullRequest
1 голос
/ 26 июля 2011

Я написал скрипт (который не работает), который выглядит примерно так:

#!/bin/sh

screen -dmS "somename" $HOME/somescript.sh

j=13
for i in {0..5}; do
    screen -dmS "name$i" $HOME/anotherscript.sh $i $j
    j=10
done

Если я скопирую и вставлю это в терминал, то, как я ожидаю, будет создано 7 отдельных сеансов экрана. Однако, если я запускаю его из скрипта, я получаю только первый сеанс «somename» при запуске screen -ls. Я понимаю, что экран можно использовать для создания нескольких окон за один сеанс. Мне не важно, как запускаются эти скрипты. Я просто хочу понять, почему это не работает как скрипт.

Примечание: я задавал этот вопрос в SuperUser без каких-либо подходящих ответов. Я подумал, что это не то место, чтобы задавать вопрос о том, что можно считать вопросом программирования.

1 Ответ

4 голосов
/ 26 июля 2011

Одна вещь, которую вы могли бы укусить, - это какая конкретная версия какой конкретной оболочки вы используете./bin/sh на самом деле может быть bash или bourne, и это может иметь значение для интерпретации синтаксиса вашего цикла.Например, конструкция {0..5} не понятна ни в старых версиях bash (v2.x), ни в bourne (по крайней мере, так было, когда мне наконец удалось отследить /bin/sh, который был настоящим, живым).bourne shell: -).

Я предлагаю изменить строку shebang на / bin / bash, если вам нужен ее синтаксис, и проверить, что ваш bash версии 3.x или новее.Поскольку вы говорите, что это работает из командной строки, моя ставка, однако, на линию Шебанга.

...