我有一个简单的脚本说test.sh是这样的:
#!/bin/sh
for i in 0 1 2 3 4 5
do
ssh BOX someCommand&
done
exit 0
当我运行脚本时,它会生成6个进程并在屏幕上输出结果,但在完成之后它就会在那里等待。我需要做ctrl + c才能出来。问题是我无法在其他脚本中多次调用test.sh,因为它只是等待第一次调用永远退出。有什么建议。
由于
答案 0 :(得分:4)
它确实立即退出。您的问题是,在输出打印到屏幕之前,脚本很快就会退出 。因此输出会覆盖你的提示,当你点击ctrl-c时它会重绘提示。
尝试在退出之前添加“wait
”命令 - 然后在完成所有ssh进程之前,脚本不会退出。
通过“输出覆盖你的提示”我的意思是:
答案 1 :(得分:1)
我尝试了类似的东西并且脚本正确退出
#!/bin/bash
for i in 1 2 3
do
ssh id@box "ls -l" &
done
echo "i am done"
唯一的区别是我使用bash shell
答案 2 :(得分:1)
这应该有效。
我做过这样的工作,输出可能会变得混乱。你还等多久?你确定它没有真正完成。
在退出0之前添加banner done
,然后您将确定它确实已挂起。
另一个可能性是关于someCommand
的某些事情并没有真正完成。如果它是您控制的脚本,请添加echo "someCommand on ${HOST} is finished"
以确保每个脚本都完成。