我正在使用和LSF计算集群,并试图在我的代码中包含一个循环,使用以下代码使用bjobs -p检查队列何时为空:
s1=$(bjobs -p)
s2="No pending job found"
if [ "$s1" == "$s2" ]; then
echo "TRUE"
fi这只是打印bjobs -p的输出,它等于No pending job found,而不是回显TRUE。
发布于 2016-02-09 19:21:47
尝试将斯泰尔重定向到stdout:
s1="$(bjobs -p 2>&1)"发布于 2016-02-09 20:15:56
实际上这里有很多事情可能是错误的。首先,对于这类is语句来说,明智的做法是,如果语句不是真,也给它一个"FALSE“回声,这将确保您不只是有一个if问题,如下所示:
if [ "$s1" == "$s2" ]; then
echo "TRUE"
else
echo "FALSE"
fi您还应该让脚本回显s1的内容。有可能琴弦是不一样的。
他们也可以更微妙地不同,隐藏的性格或鬼鬼祟祟的马车回来。您可以通过运行脚本并使用cat -A进行检查,如下所示:
./script.sh | cat -A这将显示存储在$s1中的字符串是否实际上是相同的。如果您一个接一个地回显$s1和$s2以进行比较,这将是最好的。
这个隐藏的字符可能导致您的如果评估他们的不同。
https://stackoverflow.com/questions/35300237
复制相似问题