我想使用 bash 脚本将文件的名称附加到该文件的顶部

我想使用 bash 脚本将文件的名称附加到该文件的顶部

我想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 变量替换会发生,但不会发生分词。这是正确的选择。

相关内容