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。
答案 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!'