如果在SSH命令内进行比较,则使用sh -c

时间:2013-03-20 21:23:13

标签: bash shell if-statement ssh

我在if语句的!=部分遇到了一些问题。基本上这个语句就我所知是有效的,但执行它会给[: 1: !=: unexpected operator。我尝试使用-n执行但是无论出于何种原因,即使输出为空,使用-n仍然运行echo命令。

对此有任何帮助表示赞赏。我已经附上了下面的代码段。

#!/bin/sh

HOST=$1
USER="/scripts/whoowns $HOST | tr -d '\r'"

ssh -t $HOST -p 22 -l deehem "sh -c 'if [ "" != "\`$USER\`" ]; then echo "Username for $HOST: \`$USER\`"; fi' ; bash -login"

1 个答案:

答案 0 :(得分:0)

如您所知,"bla "" bla"只是连接两个字符串("bla bla")。

您可以转义"\",但标准的[ test工具有专门用于此任务的选项:

   -n STRING
          the length of STRING is nonzero

   -z STRING
          the length of STRING is zero

注意:为什么你有?这样字符串永远不会是空的....