Bash paren仍在单引号内解释。

Bash paren仍在单引号内解释。,bash,Bash,有人知道这里出了什么问题吗 BASH不应该解释单引号中的任何内容。为什么我在父母身上会出错 来自BASH脚本的命令。 adb push '/home/plex/media/music/file name (Album Version).mp3' '/storage/ext_sd/music/' 错误消息 ./myscript: line 13: syntax error near unexpected token `(' ./myscript: line 13: `adb push '/hom

有人知道这里出了什么问题吗

BASH不应该解释单引号中的任何内容。为什么我在父母身上会出错

来自BASH脚本的命令。

adb push '/home/plex/media/music/file name (Album Version).mp3' '/storage/ext_sd/music/'
错误消息

./myscript: line 13: syntax error near unexpected token `('
./myscript: line 13: `adb push '/home/plex/media/music/file name (Album Version).mp3' '/storage/ext_sd/music/''

如果其他人遇到这种情况,将源文件名周围的单引号(')更改为双引号(“)可以消除问题


事实证明,这不是ADB,而是嵌入的单引号。切换到双引号可以正确处理嵌入的单引号和括号。

当您将帖子中的一行逐字复制粘贴到新文件并执行它时,是否可以验证您是否仍然看到此问题?如果没有,请扩展示例,直到其可复制为止通过从帖子中复制粘贴。这可以确保您的问题捕获所有相关信息,并且问题不在于您未包含的代码。Hmmm。它似乎在移动。这是一个用于复杂播放列表的导出脚本,有几百行。但是我删除了不会产生错误的行,错误会移动到另一行与parens有关。这肯定与特殊角色有关,但我不确定这一点到底是什么。对我来说,听起来像是缺少了引号。也许你的一首歌的名字中有一个撇号。你看过了吗?这是myscript中的一个错误;第13行是什么?我发布的那行是第13行。命令没有看到这样的引号,所以这不可能是一个
adb
问题。您所给出的一行代码不可能仅仅通过切换报价类型而表现不同。您的脚本中的其他地方有一个错误影响了这行代码。我仍然认为您有一首名为
/home/plex/whatever/Rolling Stones的歌曲-我无法获得任何满足感。mp3
或类似的歌曲
中的撇号不能
干扰单引号。就是这样。双引号显然正确地括住了单引号。这就是为什么您发布了产生错误的代码行,而不是一些虚构的不会产生您声称的错误的示例。您不能在单引号字符串中包含单引号。否双引号可以让你嵌入单引号(撇号)和括号。好吧,你需要在标题中转义任何双引号、美元符号或反引号——例如
“Charlie\”Bird\“Parker-Yardbird Suite.mp3”
“Ke\$ha-TiK ToK.mp3”