我正在尝试使用applescript处理这个shell脚本,但由于文件夹名称中的单引号,它一直在说错误EOF。
do shell script "cp -R " & a & " " & "'" & d & "/My 'Folder/java/" & "'"
文件夹/我的'文件夹/是合法目录。
变量a ='/ Applications / MyProgram /'(并包括单引号)
变量d = /文件夹(没有单引号)
然而,shell正在处理它,我猜是因为文件夹用引号括起来。
有没有办法逃避这个单引号,所以它在使用shell的applescript中工作?我尝试了多个反斜杠,但它不起作用。
干杯
<磷>氮答案 0 :(得分:5)
当使用任意数据作为命令的参数时,始终使用quoted form of
。这将始终引用该值,即使它不需要引用,但它比抱歉更安全。当您使用单引号字符串时,您只能使用另一个引号取消引用(重新打开替换模式)。与AppleScript字符串不同,您无法在单引号字符串中转义字符。因此,您需要打开替换模式,转义引号,然后将替换模式转回一个。例如&#34; Joe的汽车&#34;应引用&#34;&#39;乔&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;它是一个引用的字符串&#34; Joe&#34; +转义引号字符+引用字符串&#34; s car&#34;。但就像我开始时你应该使用quoted form of
,quoted form of "Joe's car"
会返回"'Joe'\\''s car'"
使用引用形式的命令如下所示:
do shell script "cp -R " & quoted form of a & space & quoted form of (d & "/My 'Folder/java/")
答案 1 :(得分:1)
出现问题是因为你在文件名中有这个勾号,在终端命令行上你会使用勾选 - 双勾选勾选 - 双勾选刻度序列来表示它。
(从下面的终端)
729$ echo 'My '"'"'Java Folder'
My 'Java Folder
在Applescript和你的命令行中,它变得更加复杂,我建议你回复你的命令行,直到你得到你期望的结果。
set res to (do shell script "echo 'My '\"'\"'Java Folder'")
log res
--> (*My 'Java Folder*)
我认为你必须从头开始,重新构建你如何逃脱周围命令行的其余部分,如果它不能按原样插入。
您还应删除不需要它们的实体的单引号(无空格)。这样,您的命令行将更容易编辑和阅读。
答案 2 :(得分:0)
根据McUsr的回答为AppleScript(JAX)用户添加JavaScript答案:
com.datastax.driver.core.Cluster.builder().withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.QUORUM))
如果你不知道JAX是什么,它是AppleScript但是使用JavaScript。打开脚本编辑器,然后从记录按钮下方的下拉列表中选择JavaScript。