Unix:if / then语句总是false

时间:2013-09-24 01:27:35

标签: bash shell unix sh

Unix 中的if / then语句总是将我放入else语句中。我正在使用Bash。

name="Don"
if [ "$name" == "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi

这是我的第一个Unix shell脚本,所以我确信它是显而易见的。我已经检查了样式指南和其他if / then示例,但没有看到任何错误:http://www.dreamsyssoft.com/unix-shell-scripting/ifelse-tutorial.php

3 个答案:

答案 0 :(得分:4)

如果您在POSIX shell中,请不要使用==。而是使用===特定于Bash。

name="Don"
if [ "$name" = "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi

答案 1 :(得分:3)

我执行了你的脚本,它正如预期的那样工作。

如果这是完整的代码剪断,你是否可以忘记打电话给bash? 我问这个是因为当执行剪切时使用" sh",它表现得像你所说的那样,因为这对于sh来说只是部分有效。

所以我想你错过了这个:

#!/bin/bash
name="Don"
if [ "$name" == "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi

答案 2 :(得分:0)

原始代码中只有一个问题:读取的行

echo "Hi Don!"

shell正试图解释特殊字符! 尝试将此行单引号示例:

echo 'Hi Don!'