基本上我是使用 vi 编辑器和 echo 命令在 SH 文件内创建另一个 SH 文件。这是原始 SH 文件的内容-
#!/bin/bash
echo "#!/bin/bash" > f1.sh
echo "echo "hello"" > f1.sh
f1 是我想使用 echo 命令写入的 SH 文件,但在运行原始文件时,f1 文件不会写入 #!bin/bash 它只有 echo "hello" 命令。我尝试将 echo HASHBANG 命令编写为 echo \#\!/bin/bash 但效果不佳。那么如何在 vi 编辑器中使用 echo 命令将 #!bin/bash 写入另一个 SH 文件呢?
答案1
使用此处文档代替:
#!/bin/bash
cat >f1.sh <<'SCRIPT_END'
#!/bin/bash
echo "hello"
SCRIPT_END
这会将脚本按原样传递到 ,而 shell 不会干扰任何内容,并将cat
其重定向到文件f1.sh
。
您的代码存在很多问题,但与重定向相关的问题是f1.sh
您每次使用>
重定向到文件时都会截断(清空)该文件。这意味着echo
代码中的第二个会覆盖第一个写入文件的数据echo
。
另外,第二行的引用echo
没有意义。
Vi 编辑器与此无关。