Решено! См. Ниже
У меня есть сценарий, который должен делать следующее:
- Прочтите строку из файла, строка принимает вид ftp: // user : [email protected]/path/to/dir/
- Запустить новый экземпляр lftp в новом окне в данном сеансе экрана GNU, который загружает содержимое каталога, из которого был запущен сценарий, в каталог, указанный в 1.
- Повторите 1-2 со следующей строкой в файле, сколько бы строк ни было.
Поскольку рабочий каталог сеанса экрана по умолчанию может отличаться от текущего рабочего каталога, сценарий должен сначала перейти на текущий рабочий каталог.
На данный момент сценарий выглядит примерно так:
#!/bin/bash
SERVERLIST=$1
INITIAL_WD="$PWD"
SCREEN_SESSION="mysession"
if ! screen -list | grep -q "$SCREEN_SESSION"; then
echo "Creating new screen session..."
screen -d -m -S "$SCREEN_SESSION"
fi
while IFS='' read line || [[ -n "$line" ]] ; do
echo "Uploading to ${line}"
screen -S "$SCREEN_SESSION" -X screen 'cd $INITIAL_WD ; lftp -e "set ftp:ssl-allow false; mirror -Rvc" "$line"'
done < <(cat $SERVERLIST)
К сожалению, это не работает. Кажется, что сценарий выполняется, но команда lftp не запускается ... когда я повторно подключаюсь к сеансу экрана, появляется только одно окно (вместо окон #_of_lines), и загрузка не выполняется.