Bash

以邏輯測試的輸出為條件的變數的一行定義

  • August 22, 2020

bash程式中,我總是以以下長手方式定義條件變數

dog=1
if [[ $dog -eq 1 ]] ; then
  cow=1
else
  cow=0
fi

這顯然是非常低效的。在MATLAB我可以執行以下操作

cow=(dog==1)

即,一行而不是五行。在 bash 中是否有類似的方法可以做到這一點?感謝您的任何建議。

對於純粹基於整數的賦值,您可以使用expr ? expr : expr條件運算符:

dog=1
cow=$((dog ? 1 : 0))

這僅適用於牛和狗的整數值,並且僅測試(狗,此處)為零/非零值。

dog=2
cow=$((dog ? 42 : 7))

引用自:https://unix.stackexchange.com/questions/605636