При подключении экранов GNU к уже созданному сеансу, а не на каждом экране, выполняется команда echo. Также все экраны получают правильное изменение названия замазки (я вижу это по циклу с ca или ca n), кроме одного.
Здесь код, который я написал
#!/bin/bash
image="router_beta"
declare -a routers
routers=( 101 102 103 104 105 106 107 108 109 )
# The scenario is the parent directory
scenario=$(pwd)
scenario=${scenario##*/}
# Start the main screen session and give it the name SESSION and detach it
screen -dm -S "SESSION" -t "$scenario"
# Give the SSH title the string CONSOLE
screen -p "$scenario" -X exec echo -ne "\033]0;CONSOLE\007"
# for each router attach a screen to the already existing session
# and give each screen a title
for router in ${routers[@]}; do
screen_title="Scenario $scenario: $router"
# attach a screen to the existing SESSION and give it the title $screen_title
screen -S "SESSION" -X screen -t "$screen_title"
# since the SSH windows title doesn't change the name then execute the echo command so that it changes
screen -p "$screen_title" -X exec echo -ne "\033]0;"$screen_title"\007"
echo "Starting $image on router $router..."
# Write just the router ID in the screen
screen -p "$screen_title" -X exec echo -ne "$router\n"
done
# then use screen -r <session> to connect to the SESSION and cycle through the screen by using C-a p or C-a n
Ожидаемый результат
Чтобы команда «echo $ router» выполнялась на каждом экране, но ничего не происходит, когда я подключаюсь через screen -r, я вижу приглашение bash и только на двух экранах (например, 104 и 109) я вижу, что отображается $Переменная Кроме того, все окна ssh с замазкой получают правильный заголовок, кроме одного (случайным образом).