BASH做回顾的更好方法?

BASH做回顾的更好方法?,bash,variable-expansion,Bash,Variable Expansion,嘿,伙计们,我想知道是否有一种聪明的方法可以在bash的一段时间前回顾过去 file='foo'/bar/styles.css?ver=1.4.2 ext=$(echo ${file} | gawk -F "?" '{print$1}') echo "${ext##*.}" # css 似乎我应该能够在扩展中以某种方式完成这一切?不要认为只使用一个bash扩展语句就可以完成它(除非它们可以以某种方式嵌套),但使用两个也可以 $ start=${file%%\?*}; echo ${star

嘿,伙计们,我想知道是否有一种聪明的方法可以在bash的一段时间前回顾过去

file='foo'/bar/styles.css?ver=1.4.2

ext=$(echo ${file} | gawk -F  "?" '{print$1}')
echo "${ext##*.}" # css

似乎我应该能够在扩展中以某种方式完成这一切?

不要认为只使用一个bash扩展语句就可以完成它(除非它们可以以某种方式嵌套),但使用两个也可以

$ start=${file%%\?*}; echo ${start##*.}
css

我不太确定这里的目标,但是看看
basename
命令,看看它是否有助于您尝试执行的操作。否则,请提供预期输入和结果的解释。您到底想完成什么?您应该引用
文件=…?…
中的
。充其量,它不太可能匹配任何东西,但从技术上讲,它可以匹配任何东西,如果它不匹配,则使用正确的shell选项将导致错误-PEs不能嵌套在一般情况下,如果这个问题是在freenode的#bash中提出的,我们会建议使用其中两个。@CharlesDuffy为了向任何尝试嵌套并成功(像我一样)的人澄清,这是因为您使用的是支持它的zsh(bash、ksh等不支持)。