在 rake/ruby 中处理后引号语句中的单引号
Process single quoutes inside back quoute statement in rake/ruby
我需要执行下面的shell命令并读取rake变量中的输出:
`#{security_bin} find-identity -v -p codesigning #{keychain_path} | grep "" | awk -F\" '/"/ {print }' | head -n1`
如您所见,我使用反引号告诉 rake 解释器 "this is a shell command to execute"。问题是它不会工作,因为在调用中使用单引号会破坏解析或其他东西,并且 ruby 不知道条目在哪里结束。
我收到的错误如下:
rake xamarin:create_keychain
Deleted the old one...
About to retrieve identity...
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
发生流程的函数如下(尽管我仍然怀疑上面提到的行:
def create_temp_keychain(keychain_path, p12path)
security_bin='/usr/bin/security'
delete_keychain(keychain_path)
`/usr/bin/security create-keychain -p tempass #{keychain_path}`
`#{security_bin} set-keychain-settings -lut 7200 #{keychain_path}`
`#{security_bin} unlock-keychain -p "tempass" #{keychain_path}`
`#{security_bin} import #{p12path} -P "" -A -t cert -f pkcs12 -k #{keychain_path}`
`#{security_bin} list-keychain -d user -s #{keychain_path} "login.keychain"`
puts "About to retrieve identity..."
identity_output = `#{security_bin} find-identity -v -p codesigning #{keychain_path} | grep "" | awk -F\" '/"/ {print }' | head -n1`
puts identity_output
end
在ruby中执行以下命令的正确方法是什么?
双引号应该转义两次:
awk -F\" '...
为了在 ruby.
中基于反引号的 shell 调用中处理 shell 双引号
正确的行是:
`#{security_bin} find-identity -v -p codesigning #{keychain_path} | grep "" | awk -F\" '/"/ {print }' | head -n1`
答案归功于@mudasobwa。
我需要执行下面的shell命令并读取rake变量中的输出:
`#{security_bin} find-identity -v -p codesigning #{keychain_path} | grep "" | awk -F\" '/"/ {print }' | head -n1`
如您所见,我使用反引号告诉 rake 解释器 "this is a shell command to execute"。问题是它不会工作,因为在调用中使用单引号会破坏解析或其他东西,并且 ruby 不知道条目在哪里结束。
我收到的错误如下:
rake xamarin:create_keychain
Deleted the old one...
About to retrieve identity...
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
发生流程的函数如下(尽管我仍然怀疑上面提到的行:
def create_temp_keychain(keychain_path, p12path)
security_bin='/usr/bin/security'
delete_keychain(keychain_path)
`/usr/bin/security create-keychain -p tempass #{keychain_path}`
`#{security_bin} set-keychain-settings -lut 7200 #{keychain_path}`
`#{security_bin} unlock-keychain -p "tempass" #{keychain_path}`
`#{security_bin} import #{p12path} -P "" -A -t cert -f pkcs12 -k #{keychain_path}`
`#{security_bin} list-keychain -d user -s #{keychain_path} "login.keychain"`
puts "About to retrieve identity..."
identity_output = `#{security_bin} find-identity -v -p codesigning #{keychain_path} | grep "" | awk -F\" '/"/ {print }' | head -n1`
puts identity_output
end
在ruby中执行以下命令的正确方法是什么?
双引号应该转义两次:
awk -F\" '...
为了在 ruby.
中基于反引号的 shell 调用中处理 shell 双引号正确的行是:
`#{security_bin} find-identity -v -p codesigning #{keychain_path} | grep "" | awk -F\" '/"/ {print }' | head -n1`
答案归功于@mudasobwa。