案例中的多个命令?

时间:2014-01-25 01:28:11

标签: bash

是否可以这样做:

 case $ans1_1 in
     y)fedoraDeps;;
      echo "something here";;
      make -j 32;;
     n)echo "Continuing"...;;
      ;;
     *) echo "Answer 'y' or 'n'";;
  esac

其中fedoraDeps是具有yum命令的函数。

我试图用案例复制这个:

if [[ $ans1_1 = y ]]; then
    fedoraDeps
    echo "something here"
    make -j 32
elif [[ $ans1_1 = n ]]; then
      echo "Continuing..."
      :
else
    echo "Answer 'y' or 'n'"
fi

2 个答案:

答案 0 :(得分:10)

;或换行符用于结束命令。 ;;用于结束案例分支。只是不要在每个命令后尝试结束case分支,这很好:

case $ans1_1 in
    y)
      fedoraDeps
      echo "something here"
      make -j 32 ;;
    n)
      echo "Continuing"... ;;
    *) 
      echo "Answer 'y' or 'n'" ;;
esac

答案 1 :(得分:3)

由于shell行为的变化,我建议在分号前使用空格... 单'''允许你想要的东西。双倍';' '结束'案件'匹配',即

这应该有效:

case $ans1_1 
in
     y) fedoraDeps ;
        echo "something here" ;
        make -j 32 ;; ## last command for case 'match'
     n) echo "Continuing"... ;;
        ## if you want a blank line then just use one
     *) echo "Answer 'y' or 'n'" ;;
esac