繁体   English   中英

在bash脚本的头文件中的特定代码行插入字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM