Bash删除String参数的引号

时间:2018-06-03 00:08:39

标签: string bash parameters

我需要在bash中执行一个带有构造参数的命令。字符串参数需要在没有引号的情况下传递。如何删除引号?

这不起作用:

Tracks='bark.mov'
TrackDir='~/soundtracks/'
TrackPath=$TrackDir$Track
omxplayer -o local $TrackPath

这不起作用:

omxplayer -o local '~/soundtracks/bark.mov'

这确实有效:

omxplayer -o local ~/soundtracks/bark.mov

2 个答案:

答案 0 :(得分:3)

Tilde扩展仅适用于报价之外。在定义变量时删除引号,但 do 在扩展变量时包含引号。

Tracks=bark.mov
TrackDir=~/soundtracks/
TrackPath=$TrackDir$Track
omxplayer -o local "$TrackPath"

答案 1 :(得分:1)

您需要保留~不加引号,以便shell可以将其扩展到用户的主目录。此外,最好在 join 两者时添加路径分隔符,以使其显式化。在路径中有两个相邻的/并没有伤害。

Tracks=bark.mov
TrackDir=~/soundtracks/
TrackPath=$TrackDir/$Track
omxplayer -o local "$TrackPath"