如何用在bash中截取部分系统参数?

📜背景

在编程过程中遇到一个问题。在一个bash脚本中,我需要用lame重新生成音频文件的压缩版本。原有的参数为三个:种子值源txt文件目标wav文件。我希望的是能够顺便自动生成压缩的mp3版本以及添加了背景音乐的版本,但是我又不希望添加新的输入参数。这样,对于原本的系统参数进行切割和连接就成为必要的操作。

❓问题

如何切割bash从系统中获得的参数,并把参数和新的文件后缀连接在一起?

💡方案

第一,一般来说,bash脚本中,$0表示脚本自身的名称,$1表示第一个参数,$2表示第二个参数,$3之后的以此类推。

第二,bash脚本用$符号获取变量的值。换言之,不管是系统变量,还是脚本自身通过=所命名的变量,都可以通过$进行获取。

第三,bash脚本对变量获取提供了索引的语法格式:${var:start:end}。其中var是你的变量名。start是起始位置,值应为正值,表示从左到右,从0开始计。

end是结束位置,可正可负。为负值,值的大小相当于从变量尾部删除的字符数目。

如果为起始位置/结束位置空,表示到首/尾处,不进行截取。

第四,bash脚本对于变量的连接,只需要在字符串内把变量和字符串内容连接在一起即可(如果会出现变量和字母连接的情形,用${var}的语法格式声明变量名的边界即可)。

所以对于某个变量i,要其最后三个字符为指定值,一个通用的范式为:

"${i::-3}<new-value>"

而更加一般的截取方式是:

"<string>${<variable>:<start-position>:<end-position>}<string>"

🎓评价

好处是可以不用在多在bash中执行命令,或者在脚本中增加新的参数。

不足还有待观察。

posted @   Laziko  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示