如何使用 vi 编辑器将 echo "!#/bin/bash" 的输出重定向到另一个 SH 文件

如何使用 vi 编辑器将 echo "!#/bin/bash" 的输出重定向到另一个 SH 文件

基本上我是使用 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 编辑器与此无关。

相关内容