Bash 一个案例中有多个命令?

Bash 一个案例中有多个命令?,bash,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 fedo

是否可以这样做:

 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

或换行用于结束命令<代码>用于结束案例分支。只是不要在每次命令后都试图结束case分支,这很好:

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

由于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

结束一个案例。不要把它放在每一行的末尾,只放在每一行的最后一行。只需谷歌“bash case statement”了解更多细节。完全猜测,但您是否尝试过使用单个
来分隔命令,而不是双
结束这个案例?或者,在这个问题上,让newline不使用
定界命令,我想它会出现在脚本文件中在一行上,使其更加突出。在
前面插入空格
应该没有什么区别。shell没有处理什么
作为一个控制字符,允许它成为前面单词的一部分?嗯,合理的注释;在与多种风格的*Nix(或类似于*Nix的OSs&Shell)合作约30年后,我的经验反映了我所遇到的情况,即如果我们将讨论限制在当前版本的Bash上,那么是的,评论是有效的,我的评论可以忽略不计。:)使用
LF
是否会导致便携性问题?该脚本在FreeBSD、Debian、Fedora和RHEL中的工作方式是否完全相同?该语法在所有POSIX兼容的shell中都能正常工作。FreeBSD是否有名为
fedoraDeps
的命令是另一回事。
fedoraDeps
是在文件顶部定义的函数,因此它不会导致任何问题,谢谢!