没有GET参数,BASH获得文件扩展名?

时间:2014-01-06 17:42:22

标签: bash variables url

我可以使用以下

获取文件扩展名
url='http://foo.com/index.php?foo=bar' 
ext="${url##*.}" 
echo $ext // php?foo=bar

但是我有一个问题,即从中移除GET参数 这个,我怎样才能在我的外部参数中使用它?

我正在使用BASH v4 +

3 个答案:

答案 0 :(得分:4)

您可以使用:

ext='php?foo=bar'
echo "${ext%\?*}"
php

答案 1 :(得分:2)

删除结果的后缀,包括第一个?

get_params=${ext%%\?*}

您还可以使用正则表达式在一次操作中获取扩展名。

[[ $url =~ \.([^?.]+)\? ]]
ext=${BASH_REMATCH[1]}

答案 2 :(得分:0)

以下是针对非bash v4 +用户sed的解决方案:

$ cat test.sh 
#!/bin/bash

url='http://foo.com/index.php?foo=bar'
ext=$(echo $url|sed "s/.*\.\([a-zA-Z0-9]*\)\?.*/\1/g")
echo $ext
$ ./test.sh 
php