![如果文件来自参数,则无法使用终端重命名文件](https://linux22.com/image/969931/%E5%A6%82%E6%9E%9C%E6%96%87%E4%BB%B6%E6%9D%A5%E8%87%AA%E5%8F%82%E6%95%B0%EF%BC%8C%E5%88%99%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E7%BB%88%E7%AB%AF%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
我正在使用 .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%.*}
这将删除扩展