Linux命令不太清楚

时间:2018-04-20 11:52:18

标签: linux shell sh

请你在这一点上帮助我:

F1=${F2%%.(out*|txt|zip)} 

我不知道这个命令代表什么。

提前致谢。

1 个答案:

答案 0 :(得分:2)

那个shell变量赋值可能什么都不做。

您可能不熟悉此作业的一部分是%%。从我系统上的man sh开始,快速搜索显示:

 ${parameter%%word}
     Remove Largest Suffix Pattern.  The word is expanded to produce a
     pattern.  The parameter expansion then results in parameter, with
     the largest portion of the suffix matched by the pattern deleted.

可能会寻找的内容如下:

shopt -s extglob

F1="${F2%%.?(out*|txt|zip)}"
           ^
           note the difference

中存在extglob shell选项,并允许您使用bash""扩展的glob"格式,包括?(pattern)。试试man bash并搜索extglob了解详情。

请注意,您尚未使用bash标记您的问题,只是sh。 POSIX shell中没有extglob,并且赋值的符号在POSIX中没有特殊含义。 POSIX shell中的等效功能需要循环遍历您尝试删除的扩展程序。