为什么我的bashrc脚本不起作用?

时间:2015-03-26 16:55:10

标签: linux bash session ssh .bash-profile

我正在尝试创建一个从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所以这是我迄今为止的一个奇迹。非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您不希望cmd替换您的测试,请尝试

if screen -ls | grep -q ".testSession (Detached)" ; then
    screen -r testSession    
elif screen -ls | grep -q "No Sockets found"; then
    screen -S testSession
else
    echo "There is already a session with the Primary ID attached"
fi

回想一下if评估任何后续cmd-group的返回值(直至结束; then)。 [test命令的别名,但如果找到您的字符串,则grep -q将返回0,而对于其他情况,>0会返回{{1}},测试屏幕连接所需的一切。

IHTH