Bash
POSIX 浮動比較
使用舊系統,這裡我連接 sqlplus 以將返回值儲存在一個變數中,它對我來說工作得很好,但是與浮點值比較的問題
a numeric/floating comparison
和返回值可能是 0.052 或 0.0032 或整數值,到目前為止據我所知,Bash 不支持浮點比較,在 POSIX 中也不支持 bcisubsCount=$( sqlplus -s user/pass <<-EOF set pagesize 0; set feedback off; set verify off; set heading off echo off; select to_char((Max(start_time_timestamp+ (2/24))- p.port_statusmoddat), 999.999) Diff from test exit; EOF ) if [ ${isubsCount%.*} -ge 1 ]; then echo yes fi
我也試過這個,但它不起作用,:
if (( $(echo "$isubsCount >= 1" |bc -l) )); then echo yes fi
這將在所有 UNIX 機器上的任何 shell 中使用任何 awk 工作:
$ isubsCount=0.052 $ awk -v val="$isubsCount" 'BEGIN{exit !(val >= 1)}' $ echo $? 1 $ if awk -v val="$isubsCount" 'BEGIN{exit !(val >= 1)}'; then echo "yes"; else echo "no"; fi no $ isubsCount=1 $ awk -v val="$isubsCount" 'BEGIN{exit !(val >= 1)}' $ echo $? 0 $ if awk -v val="$isubsCount" 'BEGIN{exit !(val >= 1)}'; then echo "yes"; else echo "no"; fi yes
顯然,您可以將退出語句從更改
exit !(val >= 1)
為exit (val < 1)
以獲得相同的結果,但我編寫它只是為了展示您如何獲得所需的退出狀態,而無需編寫與您實際想要測試的條件相反的條件。