![使用 bash 命令通过 SSH 启动分离屏幕](https://linux22.com/image/1634390/%E4%BD%BF%E7%94%A8%20bash%20%E5%91%BD%E4%BB%A4%E9%80%9A%E8%BF%87%20SSH%20%E5%90%AF%E5%8A%A8%E5%88%86%E7%A6%BB%E5%B1%8F%E5%B9%95.png)
我正在尝试通过 SSH 以分离模式启动屏幕会话,在屏幕内执行 bash 命令......
#!/bin/bash
set -e
ssh [email protected] "screen -wipe"
sleep 1
ssh [email protected] screen -dmS session1 bash -c 'weechat --dir ircdir'
sleep 1
ssh [email protected] -t "screen -x session1"
但是,以下行在脚本中似乎不起作用,但是,它在命令提示符下起作用,有什么想法吗?
ssh [email protected] screen -dmS session1 bash -c 'weechat --dir ircdir'
答案1
我认为“set -e
一起”就是问题所在。ssh [email protected] "screen -wipe"
如果没有屏幕会话将失败并返回退出代码 1。ssh [email protected] "screen -wipe"
然后,当set -e
设置时,意味着脚本将在非零状态下立即退出。
Bash - 设置
我认为:
- 跳过非零状态下的退出,即更改“set -e”
- 确保在运行脚本之前有一个可用的屏幕会话
- 跳过
screen -wipe
- 符合您要求的其他解决方案
为了调试和尝试,您可以暂时更改set -e
为set -ex
。
然后您将看到脚本永远不会到达这一行。
ssh [email protected] screen -dmS session1 bash -c 'weechat --dir ircdir'
此外,为了测试它的运行,请将其更改set -e
为set -x
。
然后您将看到它运行并出现在调试消息中。ssh [email protected] screen -dmS session1 bash -c 'weechat --dir ircdir'