【问题标题】:Why wont my bashrc script work?为什么我的 bashrc 脚本不起作用?
【发布时间】: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,所以能走到这一步真是个奇迹。非常感谢您的帮助。

【问题讨论】:

标签: linux bash session ssh .bash-profile


【解决方案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,这就是您测试屏幕连接所需的全部内容。

IHTH

【讨论】:

  • @MarkD.Lynch :很高兴它有帮助。祝你好运,继续发帖。
猜你喜欢
  • 1970-01-01
  • 2016-11-03
  • 2012-10-07
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2013-04-29
相关资源
最近更新 更多