如果文件来自参数,则无法使用终端重命名文件

如果文件来自参数,则无法使用终端重命名文件

我正在使用 .sh 脚本自动执行一些部署任务,但有时我需要重命名一个文件,但这种方法行不通。文件更改可能不同,但后缀相同。让我们看一下这个例子,这样你就会明白我到底需要什么:

read folderName
#... at somepoint this scripts creates a file called foldername-1.0-SNAPSHOT.war (I need to rename it)
oldExecutableName ="" + $folderName + "-1.0-SNAPSHOT.war" 
newExecutableName ="" + $folderName + ".war"
[[ -f "${newExecutableName}" ]] &&
mv -v ${oldExecutableName}   ${newExecutableName}

例子:

给定输入filename

所需的文件名称为:filename.war

应从文件名中删除文本 -1.0-SNAPSHOT

由于某种原因,它不起作用,我认为这是因为我从终端读取的参数。有人能帮我重命名它吗?

答案1

您可以使用 :

read -p "Enter Filename :- " finalFinalName
remove_extention='-1.0-SNAPSHOT.war'
addExtention='.war'

[[ -f "${finalFinalName}" ]] && # if file exists then rename 
mv -v $finalFinalName   ${finalFinalName%$remove_extention}${addExtention}

如果文件中有空格,则用双引号括住变量,例如"${var}"

${finalFinalName%.*}这将删除扩展

相关内容