我想void mainfunction()
在文件顶部添加。我正在从另一个文件读取文件的实际名称,并从另一个文件读取主函数的名称。我正在使用:
sed -i 1i void $name_main() $name_c
其中存储了文件的名称,name_c
并且name_main
存储了主函数的名称。但是此命令附加void $main_name()
在文件顶部。我该怎么做?
答案1
您需要使用双引号,如下所示:
sed -i "1i void $name_main()" "$name_c"
解释
考虑单引号:
sed -i '1i void $name_main()' '$name_c'
shell 不会干扰单引号字符串。它们会sed
原封不动地传递下去。因此,文字字符串$name_main
将出现在输出中。同样,此命令将尝试对文件名$name_c
而不是该 shell 变量的值给出的名称进行操作。
不考虑引号:
sed -i 1i void $name_main() $name_c
如果没有引号,shell 将执行分词。这可能会导致各种问题。此外,如果没有引号,shell 会认为括号会启动子 shell。您也不希望出现这种情况。
使用双引号时,shell 变量替换会发生,但不会发生分词。这是正确的选择。