2

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 。

4

3 回答 3

4

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

name="Don"
if [ "$name" = "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi
于 2013-09-24T01:28:56.463 回答
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
于 2013-09-24T01:33:33.770 回答
0

您的原始代码中只有一件事是错误的:读取的行

echo "Hi Don!"

外壳正在尝试解释特殊字符! 尝试将此行单引号示例:

echo 'Hi Don!'
于 2013-10-28T21:10:25.710 回答