嗨我想写一个简单的bash脚本来附加到屏幕会话。如果会话尚未启动,则会启动它并尝试重新附加。Bash IF语句:命令输出的字符串比较总是假的
我遇到的问题是与if语句;它应该将屏幕命令的输出与失败消息进行比较,如果它们相等,则继续开始会话并附加。但它总是会else子句,打印出我是核对错误消息:■
两个字符串包含相同的事情:“有没有要附加匹配sctest屏”
但庆典认为他们是不同的...
这里的bash脚本,我缺少什么?
#!/bin/bash
screenOutput=$(screen -aA -x sctest);
failString="There is no screen to be attached matching sctest.";
if [ "$screenOutput" = "$failString" ]; then
echo "screen session not started. starting now...";
# . ./init.sh
# echo $(screen -aA -x sctest);
else
echo "$screenOutput";
fi
我几乎就发现了问题,因为我张贴。我通过删除显示我在$ screenOutput末尾有一个\ r的空格来创建if行错误。如果有人用命令查看这些不可见字符,那么这将是一个非常感谢的接受答案:) – nevernew
什么是字符串存储screenOutput。请使用echo检查。 – Varun
它失败了,因为存储在'screenOutput'中的输出被'^ M'终止。您可以运行cat -vET <<<“$ screenOutput”'来查看违规字符。 – alvits