[編輯] 解決了。實際問題是處理程式變數之一中的拼寫錯誤,而不是我最初認為的 zsh 問題。
我試圖阻止 zsh 用]實際字符“”替換 ] 右方括號的代碼“ ]”。
出于我的目的 - 通過 shell 腳本中的 curl 呼叫 last.fm API,以從 Apple Music 獲取有關曲目的資訊 - 它需要保持為“ ]”,否則 API 無法識別它。我試過用反斜杠或第二個“%”轉義“]”,但這不起作用,它仍然被替換為“]”
這是我正在嘗試做的和不起作用的示例:
曲目名稱原字串:“YESTODAY (Extended Version) [Bonus Track]”
API 需要如何拼寫才能作業:“YESTODAY (Extended Version) [Bonus Track]”
我的 AppleScript 處理程式將空格替換為“ ”。左邊[保持為“[”(我猜是因為它后面緊跟著更多的字母,因此 zsh 無法將其識別為代碼并替換它)。右邊]通常是軌道字串的最后一個字符,后面沒有任何內容,因此 "]" 被 zsh 識別并寫為 "]" 。
我該如何解決?任何幫助是極大的贊賞 :)
供參考:AppleScript 中應該用代碼替換“[ ]”的部分。(這顯然不是完整的腳本)。如果你運行它,它會正確地替換 [ ]。do shell script curl_command由于 zsh 解釋代碼,因此僅在使用整個 API 呼叫時才會出現此問題。
set trackreplace to "YESTODAY (Extended Version) [Bonus Track]"
if trackreplace contains "[" then
set trackreplace to replaceChars("[", "[", trackreplace)
end if
if trackreplace contains "]" then
set trackeplace to replaceChars("]", "]", trackreplace)
end if
on replaceChars(find, replace, subject)
set savedelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to find
set subject to text items of subject
set AppleScript's text item delimiters to replace
set subject to (subject as string)
set AppleScript's text item delimiters to savedelims
return subject
end replaceChars
uj5u.com熱心網友回復:
正如@GordonDavisson 所指出的,這不是 zsh 問題,而實際上只是其中一個處理程式變數(trackeplace而不是)中的錯字trackreplace
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489576.html
上一篇:如何在flutterapi中將curl轉換為url?
下一篇:通過idAPI/URL獲取鏈接
