数字范围的case语句

时间:2014-06-06 12:47:10

标签: bash case

我正在写剧本。

case "${x_time}" in
  10) cp fileA fileB
      ;;
  20) cp fileC fileD
      ;;
  *) echo "Please check the $x_time"
      ;;
esac

我希望1..10代替1011..20代替20。例如(1|2|3|...|10)我的意思是,如果$x_time is 7first block应该执行,18, the second block代表21, the *)

检查$x_time列表的任何解决方案? 谢谢。

1 个答案:

答案 0 :(得分:0)

改为使用[[ ]]测试:

if [[ $x_time -ge 1 && $x_time -le 10 ]]; then
    cp fileA fileB
elif [[ $x_time -ge 11 && $x_time -le 20 ]]; then
    cp fileC fileD
else
    echo "Please check the $x_time"
fi

也可以根据自己的喜好使用(( ))

if (( x_time >= 1 && x_time <= 10 )); then
    cp fileA fileB
elif (( x_time >= 11 && x_time <= 20 )); then
    cp fileC fileD
else
    echo "Please check the $x_time"
fi