【发布时间】:2017-02-05 10:57:06
【问题描述】:
在 bash(实际上是 MacOS)中编写一个小脚本,我想使用 find,有多个来源。通常不是问题,但要搜索的源目录列表作为字符串保存在变量中。同样,通常不是问题,但其中一些名称中包含空格。
我可以构造完整的命令字符串,如果直接在命令提示符下输入(实际上是复制和粘贴),它会按要求和预期工作。但是当我尝试在脚本中运行它时,它会在名称中的空格上不合格,我无法解决这个问题。
我不能引用整个源字符串,因为它只会被视为一个当然不存在的单个项目。我在变量中保存的字符串中用反斜杠转义每个空格,它只是丢失了。如果我使用双反斜杠,它们都会保持原位,但又会失败。我尝试过的任何引用方法基本上都被忽略了,引号被视为普通字符,并且在每个空格处进行拆分。
到目前为止,我只能在整个命令字符串上使用 eval 来使其工作,但我觉得应该有比这更好的解决方案。
具有讽刺意味的是,如果我使用 AppleScript,我可以创建一个合适的命令字符串并使用 doShellScript 完美地运行它(好吧,那是使用 JXA,但它与实际的 AppleScript 相同)。但是,到目前为止,我无法仅在 bash 脚本中找到正确的转义机制,而无需求助于 eval。
有人建议解决这个问题吗?
【问题讨论】:
-
用更少的文字和更多的代码来显示有问题的部分会更好......
-
如果您阅读单词有困难,我很抱歉。