任何人都知道为什么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循环中导致意外退出?
谢谢