请你在这一点上帮助我:
F1=${F2%%.(out*|txt|zip)}
我不知道这个命令代表什么。
提前致谢。
答案 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
bash 中存在extglob
shell选项,并允许您使用bash""扩展的glob"格式,包括?(pattern)
。试试man bash
并搜索extglob
了解详情。
请注意,您尚未使用bash
标记您的问题,只是sh
。 POSIX shell中没有extglob
,并且赋值的符号在POSIX中没有特殊含义。 POSIX shell中的等效功能需要循环遍历您尝试删除的扩展程序。