似乎我的环境发生了变化,if / else语句不起作用。在终端输入:
if true; then echo 1; else echo 2; fi;
将等待另一个令牌(带有>
提示符),而不是按预期执行。
我已尝试在其他bash环境中编写此语句,并打印" 1"如预期的那样。我不知道我做了什么让我的if语句不起作用。
答案 0 :(得分:1)
这里最合理的情况是语法的一个元素被别名覆盖。考虑一下:
alias fi=file
if true; then echo 1; fi
因此,将读取shell:
if true; then echo 1; file
......它还在等待更多的输入。
考虑使用函数而不是别名来避免这种问题。例如:
fi() { file "$@"; }
...将正确报告语法错误,而不是让您定义具有危险名称的内容。