String 如何在bash中提取文件名并更改结尾?
我有一个bash脚本,它接受以String 如何在bash中提取文件名并更改结尾?,string,bash,String,Bash,我有一个bash脚本,它接受以.in结尾的文件名,例如a1.ina2.in,我想获取该参数并提取a1并将.out添加到它,我该怎么做 我知道接受参数是$1-但是如果您的文件只有一个扩展名,如何提取a1?: $ echo "a.in" | cut -d '.' -f1 a 如果文件只有一个扩展名: $ echo "a.in" | cut -d '.' -f1 a 若要从参数(或其他变量)中删除固定后缀,请使用${1%}--这将删除中的尾随。如果参数未以结尾,则不执行任何操作。要添加后缀,只需添
.in
结尾的文件名,例如a1.in
a2.in
,我想获取该参数并提取a1
并将.out
添加到它,我该怎么做
我知道接受参数是$1
-但是如果您的文件只有一个扩展名,如何提取a1
?:
$ echo "a.in" | cut -d '.' -f1
a
如果文件只有一个扩展名:
$ echo "a.in" | cut -d '.' -f1
a
若要从参数(或其他变量)中删除固定后缀,请使用
${1%}
--这将删除中的尾随。如果参数未以
结尾,则不执行任何操作。要添加后缀,只需添加它:${1%.in}.out
要删除任何后缀,可以在
%
后面使用glob模式,例如:${1%.*}
。这将删除最短的匹配后缀。您可以使用%%
删除最长的匹配后缀:${1%%.*}
要从参数(或其他变量)中删除固定后缀,请使用${1%.in}
--这将删除尾随的.in
,如果参数不以.in结尾,则不执行任何操作。要添加后缀,只需添加它:${1%.in}.out
要删除任何后缀,可以在%
后面使用glob模式,例如:${1%.*}
。这将删除最短的匹配后缀。您可以使用%%
删除最长的匹配后缀:${1%%.*}