#( 在 shell case 语句中

Posted

技术标签:

【中文标题】#( 在 shell case 语句中【英文标题】:#( in shell case statement 【发布时间】:2019-08-31 21:47:52 【问题描述】:

我试图通过阅读并尝试理解每个语句的作用来了解 gimp 源代码中的配置脚本是如何工作的。我在文件的开头遇到了一个将posix设置为on的case语句。我不明白“#(”是什么意思。是评论还是别的什么?

case `(set -o) 2>/dev/null` in #( 
       *posix*) : 
              set -o posix ;; #( 
       *) : 
           ;; 
esac

【问题讨论】:

这是一条评论。在文件中使用平衡括号通常很有用(对于跳转到匹配大括号的编辑器),注释的目的是匹配下一个案例末尾的) 较新的bash 允许您改写(*posix*) 来实现相同的目的。 @WilliamPursell 非常感谢,我以为是这样,但我想确定一下。 为什么不直接做 set -o posix 呢?有什么理由这样做case 开关吗?为什么要set -o 然后检查*posix* @user3625976 如果你愿意link to the original script,这个问题会更好。查看脚本和commit,它看起来只是carlobaldassi 在bash 中的一种修饰方式,他使用case ... #(;; #(。我相信这是让编辑正确处理)大括号。 【参考方案1】:

是的,一行中# 之后的任何内容都被视为注释。请参阅 this 了解 switch case 语法。

【讨论】:

以上是关于#( 在 shell case 语句中的主要内容,如果未能解决你的问题,请参考以下文章

#( 在 shell case 语句中

shell编程之case分支语句

shell脚本—— case语句+函数

CentOS shell-case语句

Shell编程之case语句与循环语句

理论+实操:shell之case语句for/while/until循环语句函数数组-满满的干货