简单if语句在交互式shell

时间:2016-10-10 22:29:33

标签: bash

似乎我的环境发生了变化,if / else语句不起作用。在终端输入:

if true; then echo 1; else echo 2; fi;

将等待另一个令牌(带有>提示符),而不是按预期执行。

我已尝试在其他bash环境中编写此语句,并打印" 1"如预期的那样。我不知道我做了什么让我的if语句不起作用。

1 个答案:

答案 0 :(得分:1)

这里最合理的情况是语法的一个元素被别名覆盖。考虑一下:

alias fi=file
if true; then echo 1; fi
因此,

将读取shell:

if true; then echo 1; file

......它还在等待更多的输入。

考虑使用函数而不是别名来避免这种问题。例如:

fi() { file "$@"; }

...将正确报告语法错误,而不是让您定义具有危险名称的内容。