簡體   English   中英

如何在shell中的if語句中編寫多個“and”、“or”條件?

[英]How to write multiple “and”, “or” conditions in a if-statement in shell?

我正在努力使這項工作。 我需要檢查col_numbersok_numbers是否相同,然后打印 WORKS 除非col_numbersok_numbers都為零。 我該如何測試? 我試過這個,但沒有得到預期的結果。

Condition1 ( I don't want to print `WORKS!` when both are zero though they both are equal):
ok_numbers=0
col_numbers=0

Condition2 (I want to print `WORKS!` because both are non-zero and equal):

ok_numbers=4
col_numbers=4

我在下面的代碼中缺少什么?

  if [ ( ${col_numbers} -eq ${ok_numbers} ) -a (( ${col_numbers} -ne 0 ) -o ( ${ok_numbers} -ne 0 )) ]; then
    echo "WORKS!"
  fi

我認為您不能那樣使用() 在 bash 中,他們創建了一個子shell。

相反,我會做兩個測試條件(並簡化邏輯)。

#!/bin/bash -u

col_numbers="$1"
ok_numbers="$2"

if [ ${col_numbers} -eq ${ok_numbers} ] && [ ${col_numbers} -ne 0 ]
then
    echo "WORKS!"
else
    echo "False"
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM