首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BASH脚本:将文件名(带空格)作为参数,并使用name (no ext)和完整文件名作为脚本命令的参数

BASH脚本:将文件名(带空格)作为参数,并使用name (no ext)和完整文件名作为脚本命令的参数
EN

Stack Overflow用户
提问于 2017-09-13 04:53:27
回答 1查看 3K关注 0票数 0

我刚开始在BASH中使用args,并且正在尝试编写脚本,在给定的标题上设置‘.MKV’标签来匹配它的文件名:去掉扩展名。命令..。

代码语言:javascript
运行
复制
mkvpropedit "Good Life.mkv" --edit info --set "title=Good Life"

...works没有问题,(感谢另一个回答的StackOverflow问题),我可以拉入完整的文件名-带有空格和扩展名-并可靠地将其拆分为完整的文件名(即"Good Life.mkv")和不带扩展名的文件名:即“美好生活”。完整的脚本(mkvRetitle.sh)是...

代码语言:javascript
运行
复制
#!/bin/bash
  echo "Change .MKV title to match its filename"
  eval fileWhole=\${1}
  eval fileTitle=$(echo "\${1%.*}")
#  echo $fileWhole
#  echo $fileTitle
  mkvpropedit fileWhole --edit info --set "title=$fileTitle"

然而,我的脚本中'mkvpropedit‘的实际调用是错误的。Passing a string with spaces as a function argument in bash返回Error: The file 'fileWhole' is not a Matroska file or it could not be found.我尝试过在mkvpropedit中找到的想法

但一直没有运气,也找不到其他看起来可能的东西:来自其他网站。我真的很感谢你的帮助。非常感谢。

EN

Stack Overflow用户

发布于 2017-09-13 05:10:37

每当你必须处理包含空格的变量/参数时,只需用引号将其括起来,就是这样。

代码语言:javascript
运行
复制
#!/bin/bash
echo "Change .MKV title to match its filename"
fileWhole="$1"
fileTitle="${1%.*}"
echo "$fileWhole"
echo "$fileTitle"
mkvpropedit "$fileWhole" --edit info --set "title=$fileTitle"
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46185167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档