作为一个非常困惑的新手,这是怎么回事?如果声明和[ ]、[[ ]]、( )、(( ))
为什么是
if [ $jengnr -eq 1 ]; then
正确,但这里是双重的:
if [[ -f "$jdir$object.eng.dat" ]]; then
然后我读到 if 内的嵌套 if 应该是 (( )) (不是我的代码)
#!/bin/bash
# Nested if statements
if [ $1 -gt 100 ]
then
echo Hey that\'s a large number.
if (( $1 % 2 == 0 ))
then
echo And is also an even number.
fi
fi
但我在 if [[ ]] 语句内的 if 语句中使用了 [[ ]],这有效吗?
有人可以解释一下什么、谁以及为什么有 4 个不同的 if 吗?
..什么时候正确使用它们?
答案1
[
这是 shell 测试命令(有时也是内置命令),是执行 shell 测试的可移植方法。
[[
这通常被称为“扩展测试”,它主要仅由 ksh 和 bash 支持,并且允许比 shell 测试更多的功能,但不那么可移植
(
这根本不是一个测试命令,单括号将创建一个子 shell。 if 语句只是评估它们后面的命令的返回代码,因此 usingif ( command ); then
可以工作,但它只是评估子 shell 的返回。
((
if
这允许 shell 算术,当您在算术相关条件上进行测试时,可以将其结合使用。
另外请注意,嵌套 if 语句没有这样的规则,您可以在任何嵌套级别使用这些方法的任意组合。