[

[

作為一個非常困惑的新手,這是怎麼回事?如果聲明和[ ]、[[ ]]、( )、(( ))

為什麼是

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 語句沒有這樣的規則,您可以在任何巢狀層級使用這些方法的任意組合。

相關內容