【发布时间】:2015-03-26 16:55:09
【问题描述】:
我正在尝试创建一个在从 SSH 会话登录时运行的小脚本。如果会话不存在,它将创建一个会话,如果会话存在且已分离,则连接到会话,如果会话存在且已附加,则不执行任何操作。
我在 ~/.bashrc 文件的底部有这个:
if [ $(screen -ls | grep ".testSession (Detached)") ]
then
screen -r testSession
elif [ $(screen -ls | grep "No Sockets found") ]
then
screen -S testSession
else
echo "There is already a session with the Primary ID attached"
fi
当我登录时,我得到:
-bash: [: too many arguments
There is already a session with the Primary ID attached
所以我知道它至少在读取文件,但似乎跳转到 else 语句。我没有看到任何额外的字符/空格,我相信它们都正确实例化了。
我真的不了解 Bash,所以能走到这一步真是个奇迹。非常感谢您的帮助。
【问题讨论】:
-
我相信我的回答 here 涵盖了您的问题。
-
为了您以后的方便,shellcheck 会自动指出问题(缺少引号),并建议使用
grep -q作为额外的改进(如已接受的答案)。
标签: linux bash session ssh .bash-profile