为什么我的 bashrc 脚本不起作用?
Why wont my bashrc script work?
我正在尝试创建一个在从 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 语句。我没有看到任何额外的 characters/whitespace,我相信它都已正确实例化。
我真的不知道 Bash 所以我能走到这一步真是奇迹。非常感谢帮助。
您不想用 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 的 return 值(直到结束 ; then
)。 [
是 test
命令的别名,但是如果找到你的字符串,grep -q
将 return 0
和其他 >0
情况下,这就是您测试屏幕连接所需的全部内容。
IHTH
我正在尝试创建一个在从 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 语句。我没有看到任何额外的 characters/whitespace,我相信它都已正确实例化。
我真的不知道 Bash 所以我能走到这一步真是奇迹。非常感谢帮助。
您不想用 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 的 return 值(直到结束 ; then
)。 [
是 test
命令的别名,但是如果找到你的字符串,grep -q
将 return 0
和其他 >0
情况下,这就是您测试屏幕连接所需的全部内容。
IHTH