在Shell脚本弹窗中显示Xcode变量$SRCROOT时弹窗无法正常显示
解决方案:在AppleScript弹窗中正确显示Xcode的$SRCROOT路径
问题核心在于单引号字符串中Bash不会展开环境变量,且直接拼接含空格/特殊字符的路径会导致AppleScript语法错误,进而弹窗无法显示。以下是两种可靠的解决方法:
方法1:转义双引号实现变量展开
将osascript的-e参数用双引号包裹,同时转义弹窗文本中的双引号,让Bash先解析$SRCROOT再传递给AppleScript:
#! /bin/bash osascript -e "display dialog \"$SRCROOT\" with title \"Hi\"" open -a Terminal "$SRCROOT"
方法2:通过AppleScript变量传递(更安全)
先将$SRCROOT赋值给AppleScript变量,再在弹窗中调用,避免复杂转义,尤其适合路径含特殊字符的场景:
#! /bin/bash osascript -e "set srcRootPath to \"$SRCROOT\"" -e 'display dialog srcRootPath with title "Hi"' open -a Terminal "$SRCROOT"
关键说明
- 原脚本用单引号包裹AppleScript代码时,
$SRCROOT会被当成纯字符串而非Bash环境变量,AppleScript无法识别,要么显示空内容要么直接报错(路径含空格时语法失效)。 - 必须确保脚本在Xcode环境中运行(比如通过Run Script Build Phase或自定义快捷键),因为
$SRCROOT是Xcode注入的专属环境变量,直接在终端执行脚本时该变量不存在。
内容的提问来源于stack exchange,提问作者Alex Zavatone
相关产品推荐
相关产品推荐

