解决!见下文
我有一个应该执行以下操作的脚本:
由于屏幕会话的默认工作目录可能与当前工作目录不同,因此脚本必须首先更改为当前工作目录。
目前脚本如下所示:
#!/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窗口)并且没有上传。
答案 0 :(得分:0)
此刻(在评论中@Cyrus的一些帮助之后),脚本看起来如下所示:
#!/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 chdir "$INITIAL_WD"
screen -S "$SCREEN_SESSION" -X screen bash -c "lftp -e \"set ftp:ssl-allow false; mirror -Rvc\" \"$line\" ; exec bash"
done < <(cat $SERVERLIST)
这似乎有效!