bash while循环中奇怪的ssh行为

时间:2018-09-21 01:33:26

标签: bash shell ssh stdin

任何人都知道为什么ssh命令导致bash while循环意外退出?

这是一个简化的演示脚本,旨在读取$ folder变量中的三行文件夹名称,并通过ssh在远程计算机中分别读取每一行。

# Get all columns except 'user_id'
cols = [col for col in df.columns if col != 'user_id']

# Select user_id and another column as a new dataframe.
# Use column_name as the value of the new column `question_id`
# Use column_value as the value of the new column `response_value`
# Then union all of these new dataframes
df = reduce(lambda df1, df2: df1.union(df2),
            [df.select('user_id',
                       F.lit(c).alias('question_id'), 
                       F.col(c).alias('response_value')) for c in cols])

如果我注释了while循环中的ssh远程命令执行,则可以确保在while中总共执行3个循环。

#!/bin/bash
folders="a
b
c"

echo "$folders" | while read d
do
        echo "ls ==$d=="
        # ssh tony@remote_machine "ls -l /tmp/$d"
done
echo DONE

但是,如果我在while循环中启用ssh远程命令执行,奇怪的是,在while循环中仅执行1次,然后while循环意外退出,如下所示:

ls ==a==
ls ==b==
ls ==c==
DONE

我知道我可以使用ls ==a== total 24 ... <omitted by Tony> DONE 。但是我想知道样式for d in $folders; do ssh ... done在哪里。 为什么ssh会在while循环中导致意外退出?

谢谢

0 个答案:

没有答案