今天在測試編寫的redis數據庫的ping檢測腳本時報了一個錯誤“./redis_ping.sh: line 40: 09: value too great for base (error token is "09")”,問了度娘,說是因為shell中的雙括號運算符會將0開頭的數字當做8進制來計算,所以會報錯,09比基數大。腳本中用到雙括號運算符的地方是處理日期時分秒的地方,如下:
cur_date=`date "+%Y-%m-%d %H:%M:%S"`---獲取格式化時間
cur_hour_m2=$(($((${cur_date:11:2}+0))%2))---截取字符串,并用雙括號運算符使之與0相加(為了去掉占位0,通常是使用let,expr等加0),但是事與愿違,恰好雙括號運算符對于0開頭的數字不能當做十進制計算
cur_min=$((${cur_date:14:2}+0))--截取字符串,并加0
cur_sec=$((${cur_date:17:2}+0))--截取字符串,并加0