Fastlane 注释掉字符串中的引号
Posted
技术标签:
【中文标题】Fastlane 注释掉字符串中的引号【英文标题】:Fastlane comment out quotes in string 【发布时间】:2018-12-06 15:34:07 【问题描述】:我正在尝试使用 ruby shell 执行显示连接到 mac 的 ios 设备。
system_profiler SPUSBDataType | grep -A 11 -w "iPad\|iPhone\|iPad"
在终端中输出正常。
如何正确转义字符并在 ruby 控制台中运行它
但是,当使用我的 Fastfile 的通道添加相同的内容时,请注意使用“\”的转义引号。我收到非零退出错误。
desc "Register a new device"
lane :register_new_device do
UI.message("Detected device")
sh("system_profiler SPUSBDataType | grep -A 11 -w \"iPad\|iPhone\|iPad\"")
device_name = prompt(text: "Enter the device name: ")
device_udid = prompt(text: "Enter the device UDID: ")
device_hash =
device_hash[device_name] = device_udid
register_devices(devices: device_hash)
new_devices
end
错误:
[08:23:56]: Exit status of command 'system_profiler SPUSBDataType | grep -A 11 -w "iPad|iPhone|iPad"' was 1 instead of 0.
2018-12-07 08:23:55.602 system_profiler[21056:476660] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be
预期输出:
2018-12-07 08:27:52.170 system_profiler[21266:479375] SPUSBDevice: IOCreatePlugInInterfaceForService failed xx
iPhone:
Product ID: xx
Vendor ID: xx (Apple Inc.)
Version: xx
Serial Number: xxx
Speed: Up to 480 Mb/sec
Manufacturer: Apple Inc.
Location ID: xx / 3
Current Available (mA): xx
Current Required (mA): xx
Extra Operating Current (mA): xx
如何在用户将设备添加到 Fastlane 匹配之前在 shell 中运行命令并显示输出?
【问题讨论】:
该 shell 命令返回什么/应该返回什么?返回非零退出究竟是什么?sh()
操作执行的命令?
它应该只是在控制台上打印一些东西,纠正这一行导致问题 -> sh("system_profiler SPUSBDataType | grep -A 11 -w \"iPad\|iPhone\|iPad\"" )
您能否将运行此通道的输出添加到您的问题中?
错误信息添加到问题中
【参考方案1】:
您正在运行的命令似乎总是返回状态代码1
而不是0
,即使直接运行它也是如此。完成后运行echo $?
进行检查。
如果确实是这种情况并且是预期或想要的,您必须让 fastlane 的 sh
接受这一点。你可以通过给sh
一个error_callback
parameter 来做到这一点,如果状态为1,它将被执行。它实际上不需要做任何事情,所以一个空方法应该没问题。
(这背后的内部逻辑和代码是here - 注意错误消息是如何输出的存在。)
【讨论】:
以上是关于Fastlane 注释掉字符串中的引号的主要内容,如果未能解决你的问题,请参考以下文章