[英]Insert string at certain line of code in header file from bash script
我试图在bash脚本中用Objective-C
编写的Xcode
项目中的header file (.h)
中的特定代码行插入编码的加密内容。 另外,我在mac (OS X)
。 我现在的脚本代码是这样的:
sed -n '' "10i
$jsonConfigFileContent
" Sources/ConfigurationInteractor.h
当我从终端执行脚本时,我得到下一个错误:
sed: 10i
#define jsonConfigFileContent @"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"
错误:文件名太长
如果jsonConfigFileContent
较小(字符较少),则插入工作正常。 但是当这个字符串很大时,我得到了这个错误。 如何在header(h。)文件中的某行代码中插入大字符串以及如何修复此错误? 谢谢你的回答。
编辑:我在这个脚本中使用的另一个代码是:
sed -i -e "10i\
$(echo $jsonConfigFileContent)
" Sources/VWConfigurationInteractor.h
但我会得到这个错误:
sed: 3: "10i\
#define jsonConfi ...": invalid command code T
对于较小的字符串也可以正常工作,但是当字符串很大时它不起作用。 除了invalid command code T
我得到相同的错误,但有不同的字母。
如果你可以使用awk。
在变量中设置值(使用单引号):
a='#define jsonConfigFileContent @"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"'
然后执行:
$ awk -v a="$a" 'NR==3{printf("%s\n",a)};1' Sources/ConfigurationInteractor.h
我设法解决了这个问题。 在头文件中,我必须将模式变量添加到特定的代码行。 而且在bash脚本中我添加了:
sed -i "" "s|#define jsonConfigFileContent.*|$(echo $define$jsonConfigFileContent$lastMark)|g" Sources/ConfigurationInteractor.h
它终于奏效了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.