10 我正在尝试纠正我的第一个bash脚本,并且有一次将文件名传递给该脚本$1。我需要提取不带扩展名的文件名。 当前,我假设所有扩展名都是三个字母,所以我删除了最后4个字符以获取文件名: a="${1:0:-4}" 但是我需要能够使用具有三个以上字符的扩展程序,例如%~n1在Windows中。 有什么方法可以从参数中提取不带扩展名的文件名? linux bash script filenames file-extension — 用户名 source stackoverflow.com/questions/2664740/... — sancho.s ReinstateMonicaCellio
27 在bash中执行此操作的通常方法是使用参数扩展。(请参见bash手册页并搜索“参数扩展”。) a=${1%.*} 的%表示一切匹配以下的图案(.*从右边),使用最短的匹配可能的,要被从参数中删除$1。在这种情况下,您不需要在表达式两边加上双引号(“)。 — 加里约翰 source 1 文件模式通常是这样的:“ Something.eng.ext”。显然,在这种情况下,ext是扩展名,但是使用$ {1%。*}将仅返回“ Something”部分,对吗? — user304822 2014年 2 号${1%.*}将返回Something.eng。如果要删除第一个右边的所有内容,.包括.use ${1%%.*},它将返回Something。 — garyjohn 2014年