我有一个登录服务器的脚本。无论是否成功(即密码是否有效),脚本都会以返回代码 0 退出,并显示以下文本:
Error login failed.
如果发生这种情况,我希望通过运行另一个命令来重试登录,但由于返回代码,我无法做到。
如果我将输出通过管道传输到 grep 以获取“错误”,以便我可以基于此执行命令,那么登录对话框就不会显示在终端中。
有没有办法解决?
这是用于工作的伪代码:
loginCmd && echo "$?"
username:
password:
Error login failed.
0
更新
我尝试使用评论员的想法,但我无法捕捉带有“错误”的文本,因为该行出现在命令完成后......
密码错误时,实际情况如下:
agent registration
username: xyz
password:
Error login failed.
我尝试过这个:
result=$(loginCmd | tee /dev/tty)
grep -q 'Error' <<< "$result" &&
loginCmd
错误字符串在命令完成后输出,因此result
不会捕获它:
result=agent registration
所以我猜没有办法捕获这个字符串?
Error login failed.
有任何想法吗?
理想情况下,登录失败时脚本会返回 1,或者具有某种重试机制,但事实并非如此,而且我无法更改这一点,这是一个公司脚本,它只会影响终端,而不会影响客户使用的 GUI。