shell - 如果字符串包含括号(AppleScript),如何将双 \ 添加到字符串
问题描述
我编写了一个 AppleScript,它从 Genius 获取歌词并将其添加到我的 iTunes 歌曲中。
本质上,有一个循环遍历我最近添加到 iTunes 中的歌曲,对于每首歌曲,它都会进入天才并试图找到那首歌曲,如果找不到那首歌,则song_name
andsong_artist
被放入一个名为的变量中songNotAva
. 将其放入变量中的方式是:
set songNotAva to songNotAva & {"- ", song_name, " - ", song_artist & return}
. 然后,一旦“获取歌曲的所有歌词”的循环完成,如果songNotAva
不为空,则执行以下代码:
if songNotAva is not equal to {} then
do shell script "> $HOME/Desktop/songs.txt"
do shell script "echo " & songNotAva & ">> $HOME/Desktop/songs.txt"
end if
它将失败的歌曲输出到具有以下格式的文本文件中:
- song_name - song_artist
- song_name - song_artist
- song_name - song_artist
(song_name
andsong_artist
将反映失败的歌曲)
它工作得非常好,并且完全按照我的预期输出,但问题是 iTunes 中的某些歌曲标题包含括号 (),如果您尝试使用 shell 输出这些括号,它会出现错误并且不会输出任何东西(除非你在括号前有反斜杠,如 \\(\\) 那么它会正常工作)
因此,所有找不到的歌曲都保存在列表中songNotAva
,然后在循环结束后打印到文本文件中。
我的问题是如何检查 song_title 是否包含任何括号,如果包含,那么如何在括号前添加反斜杠?
解决方案
songNotAva
是一个列表,您必须使用循环并使用 . 转义每个字符串quoted form of
。
检查空列表是多余的。如果列表为空,则将跳过循环。
set songNotAva to {"7 rings(example bracket)"}
do shell script "> $HOME/Desktop/songs.txt"
repeat with aSong in songNotAva
do shell script "echo " & quoted form of aSong & " >> $HOME/Desktop/songs.txt"
end repeat
推荐阅读
- python - 从 ArgParser 和/或 PyCharm 配置日志记录
- gcc - 为什么在这个内联汇编语句中忽略了这个指针取消引用?
- amazon-s3 - AWS S3 存储桶加密 - 存储桶属性设置与存储桶策略设置
- android - FirebaseAuth.DefaultInstance 后应用程序崩溃
- ffmpeg - ffmpeg 4.0.2 在网络关闭时不会停止
- virtual-machine - 在虚拟化环境中运行 RPA UI 交互
- internet-explorer-11 - 创建工作的基本示例聚合物 3 ie11
- dart - Stack inside Stack in flutter
- java - 将 concat 与 int 一起使用?(爪哇)
- python - python xarray刻度标签大小问题