我需要在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
答案 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"