我编写了以下 shell 脚本,只是为了看看我是否理解使用 if 语句的语法:
if 0; then
echo yes
fi
这行不通。它产生错误
./iffin: line 1: 0: command not found
我究竟做错了什么?
我编写了以下 shell 脚本,只是为了看看我是否理解使用 if 语句的语法:
if 0; then
echo yes
fi
这行不通。它产生错误
./iffin: line 1: 0: command not found
我究竟做错了什么?
利用
if true; then
echo yes
fi
if 期望命令的返回码。0
不是命令。 true
是一个命令。
bash 手册在这个主题上没有说太多,但这里是: http ://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs
您可能需要查看test
命令以获取更复杂的条件逻辑。
if test foo = foo; then
echo yes
fi
又名
if [ foo = foo ]; then
echo yes
fi
要测试数字是否非零,请使用算术表达式:
if (( 0 )) ; then
echo Never echoed
else
echo Always echoed
fi
但是,使用变量比使用文字数字更有意义:
count_lines=$( wc -l < input.txt )
if (( count_lines )) ; then
echo File has $count_lines lines.
fi
好吧,从bash
手册页:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
The if list is executed. If its exit status is zero, the then list is executed.
Otherwise, each elif list is executed in turn, and if its exit status is zero,
the corresponding then list is executed and the command completes.
Otherwise, the else list is executed, if present.
The exit status is the exit status of the last command executed,
or zero if no condition tested true.
这意味着if
执行该参数以获取返回码,因此在您的示例中,您尝试执行 command 0
,这显然不存在。
确实存在的是命令和true
,它们也被别名为。它允许为s 编写更复杂的表达式。阅读以获取更多信息。false
test
[
if
man test