
作為一個非常困惑的新手,這是怎麼回事?如果聲明和[ ]、[[ ]]、( )、(( ))
為什麼是
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 語句沒有這樣的規則,您可以在任何巢狀層級使用這些方法的任意組合。